如何将多个 DataSet 列值绑定到 GroupStyle TextBlock
How to bind more than one DataSet column value to a GroupStyle TextBlock
我有以下数据集,其中“PART”数据表列绑定为 PropertyGroupDescription。我还想绑定“DESCRIPTION”列,但不将其绑定到 PropertyGroupDescription,因为那样会影响分组。
我现在得到的:
ID | NAME
PART: 1
1 | AAA
2 | BBB
PART: 2
3 | CCC
PART: 3
4 | DDD
5 | EEE
我想得到的:
ID | NAME
PART: 1, DESCRIPTION: ATLANTA
1 | AAA
2 | BBB
PART: 2, DESCRIPTION: NEW YORK
3 | CCC
PART: 3, DESCRIPTION: BOSTON
4 | DDD
5 | EEE
因为具有相同部件号的所有行共享相同的描述。
当前代码:
CS:
public DataTable DataGridParts;
readonly CollectionViewSource mycollection;
public void FillDataGridParts()
{
SqlCommand cmd = new SqlCommand
{
CommandType = CommandType.Text,
CommandText = "SELECT * FROM [PARTS] WHERE [STA_SID] = @StaSid AND [OWNER] LIKE @Search COLLATE Latin1_general_CI_AI ORDER BY LEN ([PART]), [PART] ASC, [DESCRIPTION] DESC, [SHARE] DESC",
Connection = SQLConnection.con
};
cmd.Parameters.AddWithValue("@StaSid", GlobalStrings.building_sta_sid);
cmd.Parameters.AddWithValue("@Search", '%' + textbox_search_part.Text + '%');
Mouse.OverrideCursor = Cursors.Wait;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataGridParts.Clear();
da.Fill(DataGridParts);
datagrid_parts.ItemsSource = DataGridParts.DefaultView;
mycollection.GroupDescriptions.Clear();
mycollection.GroupDescriptions.Add(new PropertyGroupDescription("PART"));
datagrid_parts.ItemsSource = mycollection.View;
Mouse.OverrideCursor = null;;
}
XAML:
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<StackPanel>
<TextBlock Height="20" Padding="0,3,0,0" FontWeight="SemiBold" Background="#e4e4e4">
<TextBlock.Text>
<MultiBinding StringFormat="{}PART: {0}, DESCRIPTION: {1}">
<Binding Path="Name" />
<Binding Path="???" /> //NO IDEA HOW TO BIND HERE
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<ItemsPresenter/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</DataGrid.GroupStyle>
<Binding Path="Items[0].DESCRIPTION" />
应该可以工作,假设具有相同部分的所有行共享相同的描述,并且 DataTable
.
中有一个名为“DESCRIPTION”的列
我有以下数据集,其中“PART”数据表列绑定为 PropertyGroupDescription。我还想绑定“DESCRIPTION”列,但不将其绑定到 PropertyGroupDescription,因为那样会影响分组。
我现在得到的:
ID | NAME
PART: 1
1 | AAA
2 | BBB
PART: 2
3 | CCC
PART: 3
4 | DDD
5 | EEE
我想得到的:
ID | NAME
PART: 1, DESCRIPTION: ATLANTA
1 | AAA
2 | BBB
PART: 2, DESCRIPTION: NEW YORK
3 | CCC
PART: 3, DESCRIPTION: BOSTON
4 | DDD
5 | EEE
因为具有相同部件号的所有行共享相同的描述。
当前代码:
CS:
public DataTable DataGridParts;
readonly CollectionViewSource mycollection;
public void FillDataGridParts()
{
SqlCommand cmd = new SqlCommand
{
CommandType = CommandType.Text,
CommandText = "SELECT * FROM [PARTS] WHERE [STA_SID] = @StaSid AND [OWNER] LIKE @Search COLLATE Latin1_general_CI_AI ORDER BY LEN ([PART]), [PART] ASC, [DESCRIPTION] DESC, [SHARE] DESC",
Connection = SQLConnection.con
};
cmd.Parameters.AddWithValue("@StaSid", GlobalStrings.building_sta_sid);
cmd.Parameters.AddWithValue("@Search", '%' + textbox_search_part.Text + '%');
Mouse.OverrideCursor = Cursors.Wait;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataGridParts.Clear();
da.Fill(DataGridParts);
datagrid_parts.ItemsSource = DataGridParts.DefaultView;
mycollection.GroupDescriptions.Clear();
mycollection.GroupDescriptions.Add(new PropertyGroupDescription("PART"));
datagrid_parts.ItemsSource = mycollection.View;
Mouse.OverrideCursor = null;;
}
XAML:
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<StackPanel>
<TextBlock Height="20" Padding="0,3,0,0" FontWeight="SemiBold" Background="#e4e4e4">
<TextBlock.Text>
<MultiBinding StringFormat="{}PART: {0}, DESCRIPTION: {1}">
<Binding Path="Name" />
<Binding Path="???" /> //NO IDEA HOW TO BIND HERE
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<ItemsPresenter/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</DataGrid.GroupStyle>
<Binding Path="Items[0].DESCRIPTION" />
应该可以工作,假设具有相同部分的所有行共享相同的描述,并且 DataTable
.