1
我想通過數據觸發器更新綁定的字符串格式。因此,我認爲只是這樣做:未應用WPF綁定 - 爲什麼會發生
<TextBlock Text="{Binding Foo.Name}" Margin="3">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Text" Value="{Binding Path=., StringFormat='Start {0}'}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Foo.IsEnabled}" Value="True">
<Setter Property="Text" Value="{Binding Path=., StringFormat='Stop {0}'}" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
現在這正說明Foo.Name的價值,而不是與應用的字符串格式(「開始」 /「停止」的字符串)。
我修改了代碼,使其工作。這是工作代碼:
<TextBlock Margin="3">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Text" Value="{Binding Foo.Name, StringFormat='Start {0}'}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Foo.IsEnabled}" Value="True">
<Setter Property="Text" Value="{Binding Foo.Name, StringFormat='Stop {0}'}" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
現在我正在尋找爲什麼第一段代碼不起作用的原因,以及爲什麼代碼的第二件作品。 我在DataTemplates中看到類似的行爲,我無法通過DataTrigger中的Setter設置或更改屬性值,因爲該屬性已直接通過對象本身的屬性設置。只有當我從對象本身中刪除屬性並將其設置爲它的工作風格時。
或者這只是WPF中的限制嗎?
它是[依賴屬性值優先順序](https://msdn.microsoft.com/en-us/library/ms743230(v = vs.100).aspx)。本地值('Text =「{Binding Foo.Name}」')比樣式設置值 – ASh
更重要,所以第一個示例中的datatrigger「stop」也不適用,因爲此優先級? – juFo
樣式設置器是#8,樣式觸發器是#6,本地值擊敗它們是#3 – ASh