4
要翻譯我的WPF應用程序,我使用返回Binding對象的標記擴展。這使我可以在應用程序運行時切換語言。我用這個標記是這樣的:數據觸發中的標記擴展
<TextBlock Text="{t:Translate 'My String'}" />"
我想通過一個數據觸發更改按鈕文本:
<Button>
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<!-- Custom control template, note the TextBlock formating -->
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="ContentHolder">
<ContentPresenter TextBlock.Foreground="Red" TextBlock.FontWeight="Bold" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<!-- Custom text triggered by Data Binding... -->
<Style.Triggers>
<DataTrigger Binding="{Binding MessageRowButton}" Value="Retry">
<Setter Property="Button.Content" Value="{t:Translate Test}" />
</DataTrigger>
<DataTrigger Binding="{Binding MessageRowButton}" Value="Acknowledge">
<Setter Property="Button.Content" Value="{t:Translate Test}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
這導致以下異常:
A「綁定'不能在'Setter'類型的'Value'屬性上設置。 '綁定'只能在DependencyObject的DependencyProperty上設置。
好吧,這對我有意義。我試圖在我的Resource中定義TextBlock,並在DataTrigger的Setter Value中使用{StaticResource MyResource}
。但是,當我這樣做時,我的按鈕的樣式沒有正確應用...
如何使用我的標記擴展名和更改按鈕上的文本而無需destring能夠對按鈕內的字符串進行樣式設置?
謝謝,這個工程! – falstaff 2011-01-07 14:50:25