2011-08-10 36 views
1

我試圖使用MVC的所有權力時,我得到了一些奇怪的行爲... :) 我試圖將一個簡單的路徑填充屬性綁定到某個值,並且不能成功。路徑填充屬性綁定不穩定行爲?

作爲一個小爲例值得...
下面是如何簡單地重現:

<Window x:Class="WpfApplication1.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid> 
    <Path Name="p" Data="M 0,0 h 30 v 30 h -30 v -30" Fill="Beige"> 
     <Path.Style> 
      <Style TargetType="{x:Type Path}"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding IsChecked, ElementName=ch}" Value="True"> 
         <Setter Property="Path.Fill" Value="Red"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Path.Style> 
    </Path> 

    <CheckBox Name="ch" Margin="35,12,-35,-12" /> 
</Grid> 
</Window> 

的另一個問題,它的工作原理與此佈局,但不是一個類似(去除填寫申報):

<Path Name="p" Data="M 0,0 h 30 v 30 h -30 v -30"> 
    <Path.Style> 
     <Style TargetType="{x:Type Path}"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding IsChecked, ElementName=ch}" Value="True"> 
         <Setter Property="Path.Fill" Value="Red"/> 
        </DataTrigger> 
        <DataTrigger Binding="{Binding IsChecked, ElementName=ch}" Value="False"> 
         <Setter Property="Path.Fill" Value="Blue"/> 
        </DataTrigger> 

       </Style.Triggers> 
      </Style> 
     </Path.Style> 
    </Path> 

難道有人能啓發我的原因嗎?

回答

3

如果您想更改樣式,請不要在路徑上設置任何Fill,因爲這樣會覆蓋dependency property value precedence的樣式。

將初始Fill值移入樣式的Setter

+0

事實上,我建立的反例並沒有工作,因爲一個錯字。 非常感謝! – Joseph

+0

很高興這是有幫助的。 (你可以[接受我的回答](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)通過點擊左邊的複選標記) –

+0

感激地完成:) – Joseph