У меня есть пользовательские привязки, как это:Как установить значение с помощью xaml только в привязке WPF?
public class MyBinding : Binding
{
public class ValueConverter : IValueConverter
{
public ValueConverter(string A)
{
this.A = A;
}
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if ((bool)value == true)
{
return A;
}
else
{
return "another value";
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
public string A
{
get;
set;
}
}
public string A
{
get;
set;
}
public MyBinding()
{
this.Converter = new ValueConverter(A);
}
}
и XAML (IsEnable является свойством класса MainWindow):
<Window x:Class="WpfApplication5.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication5"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBlock>
<TextBlock.Text>
<local:MyBinding A="value" Path="IsEnable" RelativeSource="{RelativeSource AncestorType=Window, Mode=FindAncestor}"/>
</TextBlock.Text>
</TextBlock>
</Grid>
Я готов сделать TextBlock
шоу A когда IsEnable
является истинным и показывает another value
, когда IsEnable
является ложным.
Но что бы я ни делал, я не могу установить значение A в xaml. Это всегда должно быть null
, когда я отлаживаю.
Я сделал что-то не так?
У вас есть опечатка. Его 'IsEnabled', а не' IsEnable'. Обратите внимание на окончательный «d». –
Спасибо за подсказку. – Dragon