我正在开发WPF应用程序,它有一个Window.xaml,我正在使用从数据库(MSSQL 2008R2)填充的dataGrid,在那个dataGrid我正在从我的数据库加载订单。
我也是通过numberOfOrder对我的订单进行分组,并且可以扩展它们或者将它们折叠起来,以防万一同时有很多订单。
无论如何,在我的扩展器里面是DockPanel,它有textBlock,我使用textBlock来显示数据库中每个订单的数量,但我想知道如何在数据库中显示其他内容到该textBlock(例如我想要当我将订单插入数据库时显示DateTime - 我已经完成了该属性),让我们按照Order of Order的顺序保存所有内容,让我们显示其他内容,而不是像我之前那样显示numberOfOrder。
以下是现在看起来的照片:
订单号:#1< - 我在TextBlock中显示它,1是我数据库中的numberOfOrder。
<TextBlock FontWeight="Normal" FontFamily="Verdana" FontSize="20" Height="25" Foreground="#83D744" Text="{Binding Path=Name,StringFormat= Number of Order:# {0}}" />
我想在这里做的是显示其他东西而不是订单号,因为我说我想显示DateTime或者其他什么,所以我会把它看起来像这样:
以下是完整代码:
XAML :( TextBlock在这里很重要)
<DataGrid.GroupStyle>
<!-- Style for groups at top level. -->
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander IsExpanded="True" Background="Black" Opacity="0.7">
<Expander.Header >
<DockPanel Height="50" Margin="0,0,0,0" Name="dockPanel" Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGrid}}, Path=ActualWidth}">
<Button>...</Button>
<Button>...</Button>
<TextBlock FontWeight="Normal" FontFamily="Verdana" FontSize="20" Height="25" Foreground="#83D744" Text="{Binding Path=Name,StringFormat= Number of Order:# {0}}" />
</DockPanel>
</Expander.Header>
<Expander.Content>
<ItemsPresenter />
</Expander.Content>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</DataGrid.GroupStyle>
用于填写DATAGRID的MY CLASS:
public class OrderLocal
{
public string Title { get; set; }
public int Quantity { get; set; }
public int NumberOfOrder { get; set; }
public DateTime DateOfInput { get; set; }
}
在我填写DATAGRID的所有订单后的代码:
public MainWindow()
{
InitializeComponent();
this.WindowStartupLocation = WindowStartupLocation.CenterScreen;
this.WindowState = WindowState.Maximized;
var ordersList = OrdersController.localOrders();
collectionViewSource.Source = ordersList;
collectionViewSource.GroupDescriptions.Add(new PropertyGroupDescription("NumberOfOrder"));
DataContext = collectionViewSource;
}
答案 0 :(得分:0)
也许你可以在DockPanel中放入另一个TextBlock?
<DockPanel>
<Button DockPanel.Dock="Right"/>
<Button DockPanel.Dock="Right"/>
<TextBlock Text=""/>
<TextBlock Text"whatever you wan"/>
<TextBlock Text="{Binding Items, Converter={StaticResource ItemsConverter},StringFormat=\{0:d\}}"/>
</DockPanel>
和转换器:
public class ItemsConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
ReadOnlyObservableCollection<object> items = value as ReadOnlyObservableCollection<object>;
if (items == null) throw new ArgumentNullException(nameof(items));
DateTime latestOrderDate = items.Max(x => x.OrderDate);
return latestOrderDate;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
那就是它。使用不同的转换后,您可以从商品中获得不同的值。
此致
斯特芬