【问题标题】:Xaml Change text of TextBlock When Combobox Selection Change组合框选择更改时Xaml更改TextBlock的文本
【发布时间】:2016-06-25 03:35:01
【问题描述】:

我目前在我的一个 Xaml 文件中遇到问题。我创建了一个带有 2 个固定组合框项目的组合框。我还创建了一个文本块。这是 xaml 代码:

<StackPanel>
    <TextBlock Grid.Column="0" x:Name="UserSettingsConnectorGroupBoxProductTextBlock" HorizontalAlignment="Left"  TextWrapping="Wrap" Text="{Binding Strings.UserSettingsConnectorGroupBoxProductText, Source={StaticResource StringLocalizer}}" VerticalAlignment="Center" Margin="10,0,0,0"  />
    <ComboBox Grid.Column="1" x:Name="UserSettingsConnectorGroupBoxProductComboBox" VerticalAlignment="Center" Width="300" HorizontalAlignment="Left" Margin="10,5,0,0" SelectionChanged="UserSettingsConnectorGroupBoxProductComboBox_SelectionChanged" >
        <ComboBoxItem Content="Microsoft Deployment Toolkit" />
        <ComboBoxItem Content="Microsoft System Center Configuration Manager" />
    </ComboBox>
    <StackPanel Orientation="Vertical" HorizontalAlignment="Left" Margin="10,0,0,0">
    <TextBlock Name="ConnectorTextBlock" Text="toto" Margin="0,5" >
        <TextBlock.Style>
            <Style TargetType="TextBlock">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=UserSettingsConnectorGroupBoxProductComboBox, Path=Text}" Value="Microsoft Deployment Toolkit">
                        <Setter Property="Text" Value="{Binding Strings.UserSettingsConnectorGroupBoxProductTextBlockConnectorPathMDT, Source={StaticResource StringLocalizer}}" />
                    </DataTrigger>
                    <DataTrigger Binding="{Binding ElementName=UserSettingsConnectorGroupBoxProductComboBox, Path=Text}" Value="Microsoft System Center Configuration Manager">
                        <Setter Property="Text" Value="{Binding Strings.UserSettingsConnectorGroupBoxProductTextBlockConnectorPathSCCM, Source={StaticResource StringLocalizer}}" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
    </TextBlock>
    <StackPanel Orientation="Horizontal" >
        <TextBox Name="ConnectorTextBox" Margin="0,5" Width="300">
        </TextBox>
        <Button Content="Test" Margin="5" Width="100" HorizontalAlignment="Right"/>
    </StackPanel>
    <Button Content="Save" Width="100" HorizontalAlignment="Left" Margin="0,5" IsEnabled="False"/>
    </StackPanel>

还有预览:

enter image description here

当组合框选定项更改时,我希望名为“ConnectorTextBox”的文本块的文本发生更改。为了做到这一点,我在 TextBlock 中创建了 2 个数据触发器,绑定到组合框控件的“文本”属性。根据 Text 属性的值,textblock 的 Text 值会发生变化。

但它不起作用。仅显示默认值“Toto”,即使我更改了我的组合框选择。

任何帮助将不胜感激:) :)

雷吉斯

【问题讨论】:

  • 注意:我使用相同的过程将其他控件的可见性和 IsEnabled 属性设置为文本框和按钮,并且它运行完美......似乎问题仅出现在我的文本块控件上

标签: xaml combobox datatrigger


【解决方案1】:

避免设置TextBlockText 属性。试试这个

<TextBlock Name="ConnectorTextBlock" Margin="0,5" >
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=UserSettingsConnectorGroupBoxProductComboBox, Path=Text}" Value="Microsoft Deployment Toolkit">
                    <Setter Property="Text" Value="{Binding Strings.UserSettingsConnectorGroupBoxProductTextBlockConnectorPathMDT, Source={StaticResource StringLocalizer}}" />
                </DataTrigger>
                <DataTrigger Binding="{Binding ElementName=UserSettingsConnectorGroupBoxProductComboBox, Path=Text}" Value="Microsoft System Center Configuration Manager">
                    <Setter Property="Text" Value="{Binding Strings.UserSettingsConnectorGroupBoxProductTextBlockConnectorPathSCCM, Source={StaticResource StringLocalizer}}" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

如果你想设置一个默认值,如下所示

<TextBlock Name="ConnectorTextBlock" Margin="0,5" >
                <TextBlock.Style>
                    <Style TargetType="TextBlock">
                        <Setter Property="Text" Value="Toto" />
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding ElementName=UserSettingsConnectorGroupBoxProductComboBox, Path=Text}" Value="Microsoft Deployment Toolkit">
                                <Setter Property="Text" Value="{Binding Strings.UserSettingsConnectorGroupBoxProductTextBlockConnectorPathMDT, Source={StaticResource StringLocalizer}}" />
                            </DataTrigger>
                            <DataTrigger Binding="{Binding ElementName=UserSettingsConnectorGroupBoxProductComboBox, Path=Text}" Value="Microsoft System Center Configuration Manager">
                                <Setter Property="Text" Value="{Binding Strings.UserSettingsConnectorGroupBoxProductTextBlockConnectorPathSCCM, Source={StaticResource StringLocalizer}}" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </TextBlock.Style>
            </TextBlock>

希望这会有所帮助!

【讨论】:

  • 我听从了你的建议,你让我走上了正确的道路。实际上,DataTrigger 运行完美,但这是不起作用的本地化。如果我用固定值替换文本的值,它会完美运行。现在我必须理解为什么 Localization 不返回任何值。非常感谢您的帮助!
  • 是的,我也用固定值测试过。
  • 我终于找到了问题所在。我没有正确设置本地化值:-)
猜你喜欢
  • 1970-01-01
  • 2021-08-17
  • 1970-01-01
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
相关资源
最近更新 更多