2017-04-04 15 views
0

我有一個Datagrid。在這方面,我走在如何讀取圖像x:在c#後面的代碼中的名稱wpf

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

圖像控件現在,我想隱藏此圖像「圖像1」和可見在需要的時候使用這個屬性

image1.Visibility = Visibility.Hidden; 

image1.Visibility = Visibility.Visible;

但問題是,我無法在後面的代碼中讀取圖像控件的「image1」名稱來完成此操作。
任何人都可以幫助我做到這一點的最佳方式,以及如何從數據網格中讀取代碼中的名稱。

在此先感謝

+1

由於沒有一個好的[mcve]能夠清楚地顯示你的程序是如何工作的(或者任何有效的代碼,真的......你發佈的代碼甚至沒有資格這麼做),所以不可能提供實際的答案。但是,您應該使用'DataTemplate'來呈現視圖模型的數據,因此控制可見性的方法是向視圖模型中添加一個屬性,以指定您想要的可見性,並將其綁定到'Image.Visibility '模板中的屬性。您可以使用'Visibility'值,或者您可能更願意在綁定中使用非視圖數據類型(例如'bool')和'IValueConverter'。 –

+1

換句話說,你問的是錯誤的問題。你不需要爲你的'Image'元素創建一個名稱,不用擔心你需要通過名稱找到它。正確完成,您可以控制能見度而不用任何這種方式。 –

+0

您無法按名稱訪問數據模板中的任何控件。在代碼隱藏中,嘗試在數據網格上創建「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

可以使用Converter這個問題

在的XAML

<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> 

你的資源部分添加在圖片

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(); 
} 


} 
相關問題