我有一个带有许多属性的类(不在列表中),这些属性必须在视图中可切换。使用多重绑定,转换器本身可以正常工作。
<TextBox Grid.Row="1" Grid.Column="5">
<TextBox.Text>
<MultiBinding Converter="{StaticResource IntValueConvertor}">
<Binding Path="property1" />
<Binding Path="IntegerDisplay" />
</MultiBinding>
</TextBox.Text>
</TextBox>
在代码中,“ IntegerDisplay”是在我的VM中定义的属性。 Property1是必须以不同方式查看的许多属性之一(取决于IntegerDisplay)。
我要避免的是需要将整个多绑定转换器添加到每个文本框。
这种风格的东西:
<TextBox
Grid.Row="1"
Grid.Column="4"
Text="{Binding Path=Property1, Converter={StaticResource IntValueConvertor}}" />
我知道此代码不起作用!
我尝试使用一种样式,但无法获得property1的值。 是使用样式的最佳方法还是数据模板更好?
亲切的问候
答案 0 :(得分:0)
关于我的问题的一些澄清:
我有一个网格,其中包含一些传递VM的texbox。 一些文本框需要不同的视图。 没有模板或样式,转换器将使用以下代码工作:
<TextBox Grid.Row="1" Grid.Column="1">
<TextBox.Text>
<MultiBinding Converter="{StaticResource IntValueConvertor}">
<Binding Path="property1" />
<Binding Path="view" />
</MultiBinding>
</TextBox.Text>
</TextBox>
我不想每次都复制它,并且视图肯定会改变,所以我希望以模板或样式来复制它。
我按照@dean Kuga的建议创建了dataTemplate。
这是数据模板:
<UserControl.Resources>
<wpf:IntValueConvertor x:Key="IntValueConvertor" EmptyStringValue="0" />
<DataTemplate x:Key="HexStyleText" >
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource IntValueConvertor}">
<Binding Path="/" />
<Binding Path="DataContext.IntegerDisplay" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=UserControl}" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</UserControl.Resources>
我不知道如何将其应用于简单的文本块(或文本框)。 列表不是问题。
在Xaml中,我想有一个使用模板的简单文本块:
<Grid>
<TextBlock
Grid.Row="1"
Grid.Column="5"
Text="{Binding Path= ......}">
</TextBlock>
</Grid>
问题: 我如何分配数据模板,以便它执行转换器? textbox.Text是2种方式的绑定,用于显示值和用作用户的输入字段。
问候
答案 1 :(得分:0)
我建议坚持使用样式,这是这样做的基本开始。
<!--This will go in your resources-->
<Style x:Name="TextBoxStyle" TargetType="{x:Type TextBox}">
<Setter Property="Text" Value="{Binding Path=Property1, Converter={StaticResource IntValueConverter}, ConverterParameter=IntegerDisplay}"/>
</Style>
<!--This will go in your Display-->
<TextBox Style="{StaticResource TextBoxStyle}"/>