Da Sie wahrscheinlich versuchen, die IsEnabled-Eigenschaft der Schaltfläche basierend auf einer Zeichenfolge zu binden, versuchen Sie, einen Konverter dafür zu erstellen.
Ie ...
<StackPanel>
<StackPanel.Resources>
<local:SomeStringConverter mystringtoboolconverter />
</StackPanel.Resources>
<Button IsEnabled="{Binding ElementName=mytree, Path=SelectedItem.Header, Converter={StaticResource mystringtoboolconverter}}" />
<StackPanel>
und der Wandler:
[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: Da die OP auf eine Variable binden wollte, so etwas wie dies getan werden muss:
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));
}
}
}
Dann ändern Sie den obigen Bindungsausdruck zu:
{Binding Path=SomeString, Converter={StaticResource mystringtoboolconverter}}
Hinweis: Sie müssen INotifyPropertyChanged implementieren, damit Ihre Benutzeroberfläche aktualisiert wird.
Danke für die Antwort. Ich erhalte einen Fehler in meiner XAML auf dieser Linie: "Der Typ local: StringToBoolConverter wurde nicht gefunden." StringToBoolConverter ist der Name meiner Konverterklasse. Muss ich es mit einem Namespace qualifizieren? –
Number8
Bekam es. Namespace-Problem in der XAML. – Number8
Hmm. Ich denke, das ist unvollständig; Es sieht so aus, als müsste dort eine Art von Ereignis auftreten, das von der Eigenschaft member ausgelöst wurde, auf die die Schaltfläche reagiert. Wenn die Elementeigenschaft geändert wird, ändert sich der Status Enabled der Schaltfläche. – Number8