我的视图有 2 个按钮,称为 BrowseButton 和 UploadButton。
BrowseButton是默认值,UploadButton 不是。我的目标是在单击 BrowseButton 后更改默认值(即 BrowseButton 不是默认值,但 UploadButton 是)。
单击 BrowseButton 时,会设置我的 ViewModel 中的属性(字符串)。这意味着我可以绑定到该属性并将该属性的值传递给我的 IValueConverter 并返回 true 或 false。这可以按需要工作。
我的 BoolConverter 看起来像
public class BoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null || string.IsNullOrEmpty(System.Convert.ToString(value)))
return false;
return true;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
还有我的 Xaml
<Button Content="Browse for file" Width="150" Margin="5" Command="{Binding BrowseForFileCommand}" IsDefault="{Binding File, Converter={StaticResource BConverter}}" />
<Button Content="Upload" Width="75" Margin="5" Command="{Binding UploadCommand}" IsDefault="{Binding File, Converter={StaticResource BConverter}}" />
问题是,它们都绑定到同一个 BoolConverter 类,因此它们都是相等的(即,如果一个是假的,那么两个都是假的!)。再次,我可以理解为什么。
我的问题是,我该如何解决这个问题?真的只是拥有多个 Converter 类的情况吗?
例如
public class BoolConverterForThis : IValueConverter
{//implementation}
public class BoolConverterForThat : IValueConverter
{//implementation}
public class BoolConverterForOther : IValueConverter
{//implementation}