我正在MVVM中做一个应用程序,我是新手... 我有一个布尔字段,并希望向用户显示一个组合框,其中包含项目是/否,但是当用户选择它时,但在数据上下文中,值为1和0。 我有以下代码:
<TextBlock Grid.Row="2" Grid.Column="2" Text="Batch Flag" Margin="5,0,0,0" />
<ComboBox Grid.Row="2" Grid.Column="3" x:Name="cboBtchFlg" SelectedItem="{Binding SelectedADM_M022.BtchFlg,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Margin="5,0,0,2" Background="Transparent">
<ComboBoxItem Tag="1">True</ComboBoxItem>
<ComboBoxItem Tag="0">False</ComboBoxItem>
</ComboBox>
答案 0 :(得分:2)
您可以使用转换器。如果视图模型属性是一个bool,并且它绑定到组合框的SelectedIndex属性(这是一个int),那么这个例子将提供你需要的东西。
public class IntToBoolConverter : IValueConverter
{
// from view model to view
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is bool)
{
bool trueFalse = (bool)value;
return trueFalse == true ? 0 : 1;
}
return value;
}
// from view to model
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is int)
{
int index = (int)value;
if (index == 0)
return true;
if (index == 1)
return false;
}
return value;
}
}
将SelectedIndex绑定修改为
SelectedItem="{Binding SelectedADM_M022.BtchFlg,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged, Converter={StaticResource boolConverter}}"
假设您有一个名为boolConverter的资源,它引用了转换器类e,g,
<Window.Resources>
<local:IntToBoolConverter x:Key="boolConverter" />
</Window.Resources>