2017-04-04 4 views
0

私はDatagridを持っています。その中で、私は今、私は、このプロパティにイメージを読む方法x:名前の後ろにあるコードでc#wpf

image1.Visibility = Visibility.Hidden; 

image1.Visibility = Visibility.Visible;

が、問題を使用することにより、必要なときに、この画像「画像1」と表示を非表示にしたい

<DataGridTemplateColumn.HeaderTemplate> 
    <DataTemplate> 
     <Image name:image1 source=""> 
</DataTemplate> 
</DataGridTemplateColumn.HeaderTemplate> 

にイメージコントロールを取ります私は、これを達成するために、コード内のイメージコントロールの "image1"という名前を読み取ることができません。
これを行う最善の方法と、DataGridからコードの背後にある名前を読み取る方法を教えてもらえますか?

ありがとうございます。

+1

あなたのプログラムがどのように動作しているかを明確に示す良い[mcve]がないか、あなたが投稿したコードが実際に有効なコードであっても、本当の答えを与えることは不可能です。しかし、 'DataTemplate'を使ってビューモデルのデータを表示する必要があります。可視性を制御する方法は、可視性を指定するプロパティをビューモデルに追加し、それを' Image.Visibility 'プロパティを設定します。あなたは 'Visibility'値を使うことができます。また、バインディングに非ビューデータ型(' bool'など)と 'IValueConverter'を使うこともできます。 –

+1

つまり、間違った質問をしています。 'Image'要素が名前を持つ必要はありません。あなたはそれを名前で見つける方法が必要ではありません。適切に行うと、そのようなことなしに視認性を制御できます。 –

+0

データテンプレートのコントロールに名前でアクセスすることはできません。コードビハインドでは、作成後にDataGridに「ItemSource」を作成してください。そこにあなたが追加したすべてのアイテムがあります。これで、ソースでスキャンして、必要なイメージコントロールを見つけて、表示/非表示に設定できます。また、chceck:https://social.msdn.microsoft.com/Forums/vstudio/en-US/29ecc8ee-26ee-4331-8f97-35ff9d3e6886/how-to-access-items-in-a-datatemplate-for-wpf -listview?forum = wpf – Niewidzialny

答えて

0

あなたは

<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> 

XAML

のあなたのリソースセクションでは、この問題のために

をコンバータを使用することができ、画像内

Visibility="{Binding BoolValue, Converter={StaticResource BooleanToVisibilityConverter}}" 

コンバータ

public class BooleanToVisibilityConverter : IValueConverter 
{ 

private object GetVisibility(object value) 
{ 
    if (!(value is bool)) 
     return Visibility.Collapsed; 
    bool objValue = (bool)value; 
    if (objValue) 
    { 
     return Visibility.Visible; 
    } 
    return Visibility.Collapsed; 
} 

public object Convert(object value, Type targetType, object parameter, string language) 
{ 
    return GetVisibility(value); 
} 

public object ConvertBack(object value, Type targetType, object parameter, string language) 
{ 
    throw new NotImplementedException(); 
} 


} 
を追加します。
関連する問題