2016-03-10 82 views
0

我目前在我的一个Xaml文件中遇到问题。我创建了2个固定组合框项目的combox。我也创建了一个文本块。这里是XAML代码:Xaml当组合框选择变化时更改TextBlock的文本

<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” 改变ComboBox中选定项目发生变化时的文字。为了做到这一点,我在TextBlock中创建了2个绑定到“组合框控件”的“文本”属性的数据触发器。根据Text属性的值,文本块的文本值发生变化。

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

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

红塔

+0

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

回答

0

避免设置的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> 

希望这有助于!

+0

上我遵循了您的建议,我在正确的方式。实际上,DataTrigger可以很好地运行,但是这不起作用的本地化。如果我用一个固定值替换文本的值,它可以完美运行。 现在我必须明白为什么本地化不会返回任何价值。 非常感谢您的帮助! –

+0

是的,我也测试了一个固定值。 – Subru

+0

我终于找到了问题。我没有正确设置本地化值:-) –

相关问题