我正在使用 model-view-viewmodel 我目前有一个包含 3 条数据的类:2 个整数和一个枚举。
它的构造函数如下所示:
//C#
public Outcome(OutcomeEnum outcomeEnum, Int32 acutalOutcomeData, Int32 expectedOutcomeData)
{
m_outcomeEnum = outcomeEnum;
m_actualData = acutalOutcomeData;
m_expectedData = expectedOutcomeData;
}
我有 2 个彼此相邻的组合框,我已绑定(bind)到一个结果对象列表(
List<Outcome>
),我将其用于“实际”和“预期”整数值。这部分代码如下所示:( SelectedItem 和 ItemsSource 是 viewmodel 中的依赖属性)
<ComboBox ItemsSource="{Binding Path=OutcomeList}" SelectedItem="{Binding SelectedExpectedOutcome, Mode=TwoWay}" x:Name="PART_cbExpectedOutcome" Grid.Column="1" >
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Label Content="{Binding Path=ExpectedOutcomeData, Converter={StaticResource OutcomeDataToStringConverter}, ConverterParameter=Expected }" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<ComboBox ItemsSource="{Binding Path=OutcomeList}" SelectedItem="{Binding SelectedActualOutcome, Mode=TwoWay}" x:Name="PART_cbActualOutcome" Grid.Column="2" >
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Label Content="{Binding Path=ActualOutcomeData, Converter={StaticResource OutcomeDataToStringConverter}, ConverterParameter=Actual}" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
我的问题是:我想将对 Outcome 对象的引用传递到我用来在其之间进行转换的 IValueConverter 中,但这似乎无法使用 IConvertParameter 而是我将被迫根据 msdn post here 使用 Multibinding .
我想将我的方法简化为为相对简单的东西创建多重绑定(bind),因为这看起来有点矫枉过正。
我只想对我试图传递给 IValueConverter 的 Outcome 对象做一件事,即确定 OutcomeEnum 的枚举类型,以便我可以提供预期或实际数据值的正确格式。
有没有更简单的方法可以将 Outcome 对象传递到 IValueConverter
OutcomeDataToStringConverter
中,同时保持与这个 Outcome 对象列表的双向绑定(bind)?我愿意接受建议。
最佳答案
为什么不绑定(bind)到整个 Outcome
对象而不是它的 ActualOutcomeData
或 ExpectedOutcomeData
特性?这样转换器将收到整个 Outcome
对象,并基于它和转换器参数返回正确的值。
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Label Content="{Binding Converter={StaticResource OutcomeToStringConverter}, ConverterParameter=Expected}"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
关于wpf - M-V-VM WPF : Way to maintain Databinding while passing parent object of Databound object into IValueConverter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1949782/