2016-08-04 8 views
-1

ContentPresenterの可視性をバインドする際に問題があります。私は窓がちょうどのStackPanel赤と緑いっぱいの国境の含まれている次のDataTemplateにWPF ContentPresenterバインドに失敗しました可視性

<DataTemplate x:Key="MyTemplate"> 
    <Border Width="50" Height="50" Background="Red"/> 
</DataTemplate> 

を定義し、私のリソースでは

:私は、最小限の例のウィンドウを作成しました。

<StackPanel> 
    <ContentPresenter ContentTemplate="{StaticResource MyTemplate}" Visibility="{Binding Vis}"/> 
    <Border Width="50" Height="50" Background="Green" Visibility="{Binding Vis}"/> 
</StackPanel> 

可視性のDataContextに利用可能である:画面を示す

private Visibility _Vis; 
public Visibility Vis 
{ 
    get 
    { 
     return _Vis; 
    } 
    set 
    { 
     _Vis = value; 
     OnPropertyChanged(nameof(Vis)); 
    } 
} 

は、2つの境界は、互いの間で示されています。今度は問題: Visibility(OnPropertyChangedが使用されている)を変更すると、緑色の境界線のみがVisibilityを変更します。 ContentTemplateを使用している赤い枠線は、可視性を変更しません。しかし、両方のコントロールは同じプロパティにバインドされています! ContentPresenterとバインドit'sを使用しての問題は何 違いはありません

から

  • は私ものContentPresenterにDataContext={Binding}を追加しようとした違いはありません -

    • は私がCollapsedHiddenでそれを試してみました可視性?

      ありがとうございました!

  • +0

    ContentPresenterは特別な場合があります。ContentControlを必要に応じて明示的にバインドしてContentControlを置き換え、それがよりうまく動作するかどうかを確認することはできますか? –

    答えて

    1

    私はあなたが見ているものを再現することができた、と私はContentControlContentPresenterを変更することにより、それを修正することができました:

    <StackPanel> 
        <ContentControl 
         ContentTemplate="{StaticResource MyTemplate}" 
         Visibility="{Binding Vis}" 
         /> 
        <Border 
         Width="50" 
         Height="50" 
         Background="Green" 
         Visibility="{Binding Vis}" 
         /> 
    </StackPanel> 
    

    ContentPresenterはちょっと面白いです。他の人たちもあなたと同じ問題を抱えています。原則として、私がその物のプロパティを設定している場合は、代わりにContentControlに変更します。私はあなたがあまりにも面倒ではないことを願ってContentControlに明示的にContentを今バインドしなければならないと思います。

    関連する問題