2011-03-18 88 views
0

我需要隱藏DataGrid中的按鈕(Button1)。如何隱藏DataGridTemplateColumn.CellTemplate中的按鈕

按照我的代碼,並引導我...

<StackPanel> 
    <WpfToolkit:DataGrid Name="grdTitle"> 

     <WpfToolkit:DataGrid.Columns> 
     </WpfToolkit:DataGrid.Columns> 

     <WpfToolkit:DataGrid.RowDetailsTemplate> 
      <StackPanel x:Name="expLocalVersions"> 
       <WpfToolkit:DataGrid Name="grdVersion"> 
        <StackPanel> 
         <WpfToolkit:DataGrid.Columns> 
          <WpfToolkit:DataGridTemplateColumn Header="Action"> 
           <WpfToolkit:DataGridTemplateColumn.CellTemplate> 
            <Button x:Name="Button1"></Button> 
           </WpfToolkit:DataGridTemplateColumn.CellTemplate> 
          </WpfToolkit:DataGridTemplateColumn> 
         </WpfToolkit:DataGrid.Columns> 
        </StackPanel> 
       </WpfToolkit:DataGrid> 
      </StackPanel> 
     </WpfToolkit:DataGrid.RowDetailsTemplate> 

    </WpfToolkit:DataGrid> 
</StackPanel> 
+1

隱藏怎麼樣?基於什麼條件?或者你可以簡單地把'可見性='摺疊''? – madd0 2011-03-18 07:14:04

回答

0

我建議將按鈕的Visible屬性綁定到一個特殊的Proper你的Itemssource的類型。 像:

public Visibility ShowButton 
{ 
    get { return (OtherProperty ? Visibility.Collapsed : Visibility.Visible); } 
} 

<Button Visible="{Binding Path=ShowButton}" /> 
+0

好:)它的工作gud..gr8東西文森特!!! – 2011-03-20 05:22:43

+0

這就是您一般需要如何處理WPF的方法。改變你的對象,用戶界面應該自動改變。 – 2011-03-21 09:00:26

0

那還有我花了一些時間做它,這裏有一個例子應該如何做

<DataGrid AutoGenerateColumns="False" 
          Height="287" HorizontalAlignment="Left" 
          Name="dataGrid1" VerticalAlignment="Top" 
          Width="479" Margin="12,12,0,0" CanUserAddRows="False" CanUserDeleteRows="False" 
          SelectionMode="Single" SelectionUnit="Cell" ColumnHeaderHeight="30" HeadersVisibility="All"> 

      <DataGrid.Columns> 
       <DataGridTextColumn Header="Sr No" Binding="{Binding srNo}" IsReadOnly="True" /> 
       <DataGridTextColumn Header="Some Title" Binding="{Binding ArticleTitle}" IsReadOnly="True" MaxWidth="290" /> 
       <DataGridTemplateColumn MinWidth="100" Header="View"> 
        <DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <Button Visibility="{Binding Display}" Content="This Is the Button" /> 
         </DataTemplate> 
        </DataGridTemplateColumn.CellTemplate> 
       </DataGridTemplateColumn> 
      </DataGrid.Columns> 
     </DataGrid> 
    </Grid> 

代碼

public partial class MainWindow : Window 
    { 
     List<ButtonDataGrid> data = new List<ButtonDataGrid>(); 
     public MainWindow() 
     { 
      InitializeComponent(); 

      for (int x = 0; x < 10; x++) 
      { 
       ButtonDataGrid dataToAdd = new ButtonDataGrid(); 

       dataToAdd.srNo = (x + 1).ToString(); 
       dataToAdd.ArticleTitle = "This is Article No " + dataToAdd.srNo; 
       if (x % 2 == 0) 
        dataToAdd.Display = System.Windows.Visibility.Visible; 
       else 
        dataToAdd.Display = System.Windows.Visibility.Hidden; 
       data.Add(dataToAdd); 
      } 
      dataGrid1.ItemsSource = data; 
     } 
    } 
    public class ButtonDataGrid 
    { 
     public string srNo { get; set; } 
     public string ArticleTitle { get; set; } 
     public Visibility Display { get; set; } 

    } 
+0

Bravo!但我需要隱藏在運行時....我不能在任何地方在代碼後面調用按鈕 – 2011-03-18 08:15:51

+0

請參閱編輯的響應 – 2011-03-18 11:01:15