2012-02-26 8 views
2

私は、MyUserControlというカスタムユーザーコントロールを作成しています。私は複数のDependecyPropertiesを持っています。私はMainWindowでいくつかのMyUserControlが複数回定義されています。私が知りたいのは、スタイルのトリガ/プロパティが起動するカスタムプロパティをどのように作成できますか?例えばUserControlトリガーのカスタムプロパティ

、私はカスタムプロパティBOOL IsGoingとカスタムプロパティMyBackgroung(ユーザーコントロールの背景)、両方のように定義されている場合:

public bool IsGoing 
    { 
     get { return (bool)this.GetValue(IsGoingProperty); } 
     set { this.SetValue(IsGoingProperty, value); } 
    } 
    public static readonly DependencyProperty IsGoingProperty = DependencyProperty.RegisterAttached(
     "IsGoing", typeof(bool), typeof(MyUserControl), new PropertyMetadata(false)); 

public Brush MyBackground 
    { 
     get { return (Brush)this.GetValue(MyBackgroundProperty); } 
     set { this.SetValue(MyBackgroundProperty, value); } 
    } 
    public static readonly DependencyProperty MyBackgroundProperty = DependencyProperty.Register(
      "MyBackground", typeof(Brush), typeof(MyUserControl), new PropertyMetadata(Brushes.Red)); 

と私はMainWindow.xamlで私のユーザーコントロールを定義した場合に、 IsGoingプロパティがtrue/falseであるかどうかに応じて、トリガにアクセスしてMyBackgroundを設定するにはどうすればよいですか? は、私は多くのことを試してみましたが、本質的には、私のような何かを達成しようとしている:私は私の説明は、あなたが理解するために十分であると思います

<custom:MyUserControl MyBackground="Green" x:Name="myUC1" Margin="120.433,0,0,65.5" Height="50" Width="250" VerticalAlignment="Bottom" HorizontalAlignment="Left" > 
     <Style> 
      <Style.Triggers> 
       <Trigger Property="IsGoing" Value="True"> 
        <Setter Property="MyBackground" Value="Yellow"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </custom:MyUserControl> 

を。私は数日間この作業を続けてきましたが、解決策を見つけることができません。 助けてくれてありがとう!

エイドリアン

答えて

3

あなたのスタイルだけでも、あなたが引き金を経由して変更しようとするデフォルト値はprecedenceによるスタイルに移動する必要があり、UserControl.Styleとして使用する必要があり、正しいTargetTypeを持っている必要があります。

<custom:MyUserControl.Style> 
    <Style TargetType="custom:MyUserControl"> 
     <Setter Property="MyBackground" Value="Green"/> 
     <Style.Triggers> 
      <Trigger Property="IsGoing" Value="True"> 
       <Setter Property="MyBackground" Value="Yellow"/> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</custom:MyUserControl.Style> 

これが実際にであるかどうかは、コントロール定義のプロパティをどのように使用するかによって異なります。

+1

ありがとう!!!!それは働いた:) ...うわー、私はそれが簡単だとは信じられない。数日間それと苦労して、事実上同じことをした後、いくつかの行が修正されただけで...私はそれを信じることができません...ありがとう! –

関連する問題