我與RowDetialsVisibilityMode
設置一個DataGrid到VisibleWhenSelected
和RowDetailsTemplate相應的設置。當用戶選擇一行時,細節就會顯示,完全如上所述。然而,在查看細節之後,用戶想要再次隱藏行細節而不顯示另一行的細節。這最好如何完成。如何隱藏一個DataGrid明細行
更新:正如評論所說,可能是最好的辦法是細節排隱藏的行中的按鈕,但當時我不知道會是什麼綁定是什麼樣子?
我與RowDetialsVisibilityMode
設置一個DataGrid到VisibleWhenSelected
和RowDetailsTemplate相應的設置。當用戶選擇一行時,細節就會顯示,完全如上所述。然而,在查看細節之後,用戶想要再次隱藏行細節而不顯示另一行的細節。這最好如何完成。如何隱藏一個DataGrid明細行
更新:正如評論所說,可能是最好的辦法是細節排隱藏的行中的按鈕,但當時我不知道會是什麼綁定是什麼樣子?
由於該功能是基於演示-,我創建的按鈕行爲會崩潰行
public class CollapseRowAction : TriggerAction<ButtonBase>
{
public CollapseRowAction() {}
protected override void Invoke(object o)
{
var dg = FindVisualParent<DataGrid>(this.AssociatedObject);
if (dg != null)
dg.SelectedIndex = -1;
}
private static T FindVisualParent<T>(DependencyObject child) where T : DependencyObject
{
DependencyObject parentObject = VisualTreeHelper.GetParent(child);
if (parentObject == null) return null;
T parent = parentObject as T;
if (parent != null)
{
return parent;
}
else
{
return FindVisualParent<T>(parentObject);
}
}
}
而在XAML:
<sdk:DataGrid.RowDetailsTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<!--... However row details are presented ...-->
<Button Margin="10" Content="Collapse">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<myTriggers:CollapseRowAction/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</StackPanel>
</DataTemplate>
</sdk:DataGrid.RowDetailsTemplate>
其實這並沒有如預期那麼回事。一旦我們設置DetailsVisibility屬性明確該行不再根據其設置爲VisibleWhenSelected的DataGrid.RowDetailsVisibilityMode設置的行爲。建議? –
具有+/-切換按鈕創建一個列時,切換行的細節,我在現實生活中做到了這一點。我將RowDetialsVisibilityMode設置爲Collapsed,然後我將按鈕的行爲設置爲從Collapsed到Visible來回切換,或者在代碼隱藏中在按鈕IsPressed和Row的DetailsVisibility之間創建了綁定(使用ValueConverter)(必須在代碼中,而不是XAML,直到SL5出現強大的RelativeSource綁定)。有意義的博客關於它... – foson
我已經編輯了答案,取消選擇該行,從而隱藏行的細節,而不是改變DetailVisibility,正如你所說,不起作用。 – foson
你想在一個按鈕行細節摺疊行細節? – foson