2012-09-13 51 views
0

我已經在Datagrid中定義了具有三行和9列的初始表。現在按鈕應該只有當我選擇一行然後按另一個按鈕,我在我的功能區選項卡中定義我的按鈕將可見後纔可見。沙發一切運作良好,但問題是保存我的表後,關閉它,並再次打開表按鈕不存在了。我根據DataGridCell.IsSelected設置可見性,也是一個將布爾值轉換爲Visibility的BooleanToVisibilityConverter。 任何人都可以幫忙!Datagrid中的綁定按鈕 - 可見性

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#: 公共BOOL 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; 
} 

回答

0

您的按鈕的可見性綁定到您的Hinterlegung變量,它的默認值爲false。所以盡我所知,你可以在這個方法中將它改爲true - Button_StartTableModus。但是,當您重新初始化時,該值將恢復爲false,因此您需要將其設置爲true。

+0

其寫在這裏的方法that item.Hinterlegung = true; – H79

+0

@ H79你用這種方法設置Button_StartTableModus,對不對?這是按鈕被點擊時調用的方法嗎? –

+0

我的Ribbon-Tab中的按鈕不是我桌子上的按鈕 – H79

相關問題