C# Datagrid中绑定按钮的可见性

C# Datagrid中绑定按钮的可见性,c#,wpf,datagrid,wpf-controls,wpfdatagrid,C#,Wpf,Datagrid,Wpf Controls,Wpfdatagrid,我已经在Datagrid中定义了一个包含三行9列的初始表。仅当我选择一行,然后按下在功能区选项卡中定义的另一个按钮,然后我的按钮才可见时,“立即”按钮才应可见。到目前为止,一切都很好,但问题是在保存表格、关闭表格并再次打开表格后,按钮不再存在。我根据是否选择DataGridCell.IsSelected设置可见性,这也是一个BooleanToVisibilityConverter,用于将布尔值转换为可见性值。 有人能帮忙吗 XAML: C#: 公共bool-Hinterlegung{get;

我已经在Datagrid中定义了一个包含三行9列的初始表。仅当我选择一行,然后按下在功能区选项卡中定义的另一个按钮,然后我的按钮才可见时,“立即”按钮才应可见。到目前为止,一切都很好,但问题是在保存表格、关闭表格并再次打开表格后,按钮不再存在。我根据是否选择DataGridCell.IsSelected设置可见性,这也是一个BooleanToVisibilityConverter,用于将布尔值转换为可见性值。 有人能帮忙吗

XAML:


C#: 公共bool-Hinterlegung{get;set;}

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;
}
private void按钮\u StartTableModus(对象发送方、路由目标方)
{
if(DataGrid1.SelectedItem!=null&&tabItem1.IsSelected)
{
TableDataRowStringItem=(TableDataRowStringItem)DataGrid1.CurrentItem;
字符串wert=item.ObjectType;
string rowName=item.Name;
if(wert=“函数”| | wert=“过程”)
{
item.Hinterlegung=真;
如果(!tabControl.Items.Contains(tabItem2))
{
tabControl.Items.Add(tabItem2);
tabItem2.Focus();
tabItem2.IsSelected=true;
tabItem2.Header=rowName;
TableTab.Visibility=可见性.Visibility;
openTabs++;
DataGrid2.IsReadOnly=false;
在开始时启动表格模块();
}
}
}
}
//这是我的第一张桌子
private ObservableCollection tableobject=新建
可观察收集();
私有无效起始表在起始点处的模式()
{
List rowstringList=新列表();
TableDataRowStringItem=新的TableDataRowStringItem();
item.RowNumber=1;item.saveFlag=true;item.ObjectType=“E”item.Name=“E”;
item.PredecessorRowNumber=“0”;rowstringList.Add(项目);
item=新的TableDataRowStringItem();
item.RowNumber=2;item.ObjectType=“Function”;item.Name=“Function”;
item.PredecessorRowNumber=“1”;rowstringList.Add(项目);
item=新的TableDataRowStringItem();
item.RowNumber=3;item.ObjectType=“E”;item.Name=“E”;
item.PredecessorRowNumber=“2”rowstringList.Add(项目);
对于(int i=0;i
按钮的可见性绑定到默认值为false的Hunterlegung变量。所以,正如我所能说的,在这个方法中,您可以将其更改为true-Button\u StartTableModus。但是,当您重新初始化时,该值将恢复为false,因此您需要将其设置为true。

此方法中写入了item.hinterlgung=true@H79你在这个方法中设置它按钮\u StartTableModus,对吗?这是单击按钮时调用的方法吗?功能区选项卡中的按钮不是我的Table@H79好的,功能区的按钮单击事件是设置项。hinterlgung=true。重新加载表时,如何设置item.hinterlgung的值?或者你呢?我没有设置任何物品的价值
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;
}