Vì bạn có thể tìm cách liên kết thuộc tính IsEnabled của nút dựa trên chuỗi, hãy thử tạo một trình biến đổi cho nó.
Ie ...
<StackPanel>
<StackPanel.Resources>
<local:SomeStringConverter mystringtoboolconverter />
</StackPanel.Resources>
<Button IsEnabled="{Binding ElementName=mytree, Path=SelectedItem.Header, Converter={StaticResource mystringtoboolconverter}}" />
<StackPanel>
và bộ chuyển đổi:
[ValueConversion(typeof(string), typeof(bool))]
class SomeStringConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
string myheader = (string)value;
if(myhead == "something"){
return true;
} else {
return false;
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
return null;
}
}
EDIT: Kể từ khi OP muốn để ràng buộc vào một biến, một cái gì đó như thế này cần phải được thực hiện:
public class SomeClass : INotifyPropertyChanged {
private string _somestring;
public string SomeString{
get{return _somestring;}
set{ _somestring = value; OnPropertyChanged("SomeString");}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
Sau đó, thay đổi biểu thức ràng buộc ở trên thành:
{Binding Path=SomeString, Converter={StaticResource mystringtoboolconverter}}
Lưu ý, bạn PHẢI triển khai INotifyPropertyChanged cho giao diện người dùng của mình để được cập nhật.
Cảm ơn bạn đã trả lời. Tôi gặp lỗi trong xaml của tôi trên dòng này: "Loại địa phương: StringToBoolConverter không được tìm thấy." StringToBoolConverter là tên của lớp chuyển đổi của tôi. Tôi có cần phải đủ điều kiện nó với một không gian tên? –
Number8
OK. Vấn đề không gian tên trong xaml. – Number8
Hmm. Tôi nghĩ rằng điều này là không đầy đủ; có vẻ như cần phải có một số loại sự kiện được nâng lên bởi thuộc tính thành viên mà Nút phản hồi, vì vậy khi thuộc tính thành viên bị thay đổi, trạng thái Bật của nút sẽ thay đổi. – Number8