【问题标题】:Binding Button-Visibility in Datagrid在 Datagrid 中绑定按钮可见性
【发布时间】:2012-09-06 14:41:19
【问题描述】:

我在 Datagrid 中定义了一个包含三行和 9 列的初始表。仅当我选择一行然后按下我在功能区选项卡中定义的另一个按钮之后,我的按钮才可见,现在按钮应该是可见的。到目前为止一切正常,但问题是在保存我的表格后,将其关闭并再次打开表格,按钮不再存在。我根据 DataGridCell.IsSelected 设置了 Visibility,它也是一个 BooleanToVisibilityConverter,用于将布尔值转换为 Visibility 值。 谁能帮忙!

XAML:

<DataGrid.Resources>
   <BooleanToVisibilityConverter x:Key="BoolToVisConverter" />
</DataGrid.Resources>
<DataGridTemplateColumn x:Name="subgraphtyp" Header="H." Width="50">
   <DataGridTemplateColumn.CellTemplate>
     <DataTemplate>
       <Button Name="btnTable" Visibility="{Binding Path=Hinterlegung, Converter=  
               {StaticResource BoolToVisConverter}}"  Height="20" Width="25" 
               Click="Button_Table_Click">
         <Image Height="16" Source="Subgraph.png" Stretch="Fill" Width="16"/>
       </Button>
     </DataTemplate>
   </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

C#: 公共布尔 Hinterlegung { 得到;放; }

private void Button_StartTableModus(object sender, RoutedEventArgs e)
{
  if (DataGrid1.SelectedItem != null && tabItem1.IsSelected)
  {
    TableDataRowStringItem item = (TableDataRowStringItem)DataGrid1.CurrentItem;
    string wert = item.ObjectType;
    string rowName = item.Name;
    if (wert == "Function" || wert == "Process")
    {
      item.Hinterlegung = true;
      if (!tabControl.Items.Contains(tabItem2))
      {
        tabControl.Items.Add(tabItem2);
        tabItem2.Focus();
        tabItem2.IsSelected = true;
        tabItem2.Header = rowName;
        TableTab.Visibility = Visibility.Visible;
        openTabs++;
        DataGrid2.IsReadOnly = false;

        starting_Table_Mod_at_start2V();
      }
    }
  }
}

//this my initial Table
private ObservableCollection<TableDataRowStringItem> tableobject = new      
ObservableCollection<TableDataRowStringItem>();

private void starting_Table_Mod_at_start2V()
{
  List<TableDataRowStringItem> rowstringList = new List<TableDataRowStringItem>();
  TableDataRowStringItem item = new TableDataRowStringItem();
  item.RowNumber = 1; item.saveFlag = true; item.ObjectType = "E"; item.Name = "E"; 
  item.PredecessorRowNumber = "0"; rowstringList.Add(item);
  item = new TableDataRowStringItem();
  item.RowNumber = 2; item.ObjectType = "Function"; item.Name = "Function";       
  item.PredecessorRowNumber = "1"; rowstringList.Add(item);
  item = new TableDataRowStringItem();
  item.RowNumber = 3; item.ObjectType = "E"; item.Name = "E";   
  item.PredecessorRowNumber = "2"; rowstringList.Add(item);


  for (int i = 0; i < rowstringList.Count; i++)
  {
    tableobject.Add(rowstringList[i]); 
  }
  DataGrid2.ItemsSource = tableobject;
}

【问题讨论】:

    标签: c# wpf datagrid wpf-controls wpfdatagrid


    【解决方案1】:

    按钮的可见性绑定到默认值为 false 的 Hinterlegung 变量。因此,据我所知,您在此方法中将其更改为 true - Button_StartTableModus。但是,当您重新初始化时,该值会恢复为 false,因此您需要将其设置为 true。

    【讨论】:

    • 它在这个方法中写在那里 item.Hinterlegung = true;
    • @H79 你在Button_StartTableModus这个方法里设置的吧?这是单击按钮时调用的方法吗?
    • 功能区选项卡中的按钮不是我的表中的按钮
    • @H79 好的,所以功能区的按钮单击事件正在设置 item.Hinterlegung = true。重新加载表格时,如何设置 item.Hinterlegung 的值?还是你?
    • 我没有设置 item.Hinterlegung 的任何值
    猜你喜欢
    • 1970-01-01
    • 2018-07-15
    • 2011-12-04
    • 2013-09-09
    • 2012-08-12
    • 2018-07-28
    • 2013-05-30
    • 1970-01-01
    • 2010-12-01
    相关资源
    最近更新 更多