我的wpf应用程序中有一个datagrid,我有一个简单的问题.我有一个通用列表,我希望每次将对象添加到集合时将此集合绑定到我的数据网格数据源.我对使用可观察的集合不感兴趣.
关键是我在其他地方使用相同的方法,并且工作正常.但是这次当我按下Add按钮时,会添加一个对象并且datagrid会正确更新,但是从添加到集合datagrid的第二个项目不再更新.
这是代码:
private void btnAddItem_Click(object sender, RoutedEventArgs e)
{
OrderDetailObjects.Add(new OrderDetailObject
{
Price = currentitem.Price.Value,
Quantity = int.Parse(txtQuantity.Text),
Title = currentitem.DisplayName,
TotalPrice = currentitem.Price.Value * int.Parse(txtQuantity.Text)
});
dgOrderDetail.ItemsSource = OrderDetailObjects;
dgOrderDetail.UpdateLayout();
}
Run Code Online (Sandbox Code Playgroud)
任何的想法 ?
任何人都可以在WPF中给出Listview的Itemsource和DataContext之间的区别吗?用例子
在我的应用程序中,用户应该点击图像,然后点击一些点出现.他也可以通过右键单击等删除它们.
所以我有一个窗口(XAML代码隐藏+),用帆布组成的测试项目,而我处理一些事件,如MouseMove和MouseLeftButtonDown其打算把点添加到一个ObservableCollection<Point>在后面的代码.
我已经有了这个,我不知道我应该如何实现数据模板和数据绑定,以便我的网格将包含一个ItemsControl并且每个点都将显示为一个点(Path有一个EllipseGeometry,所以我可以设置它Center).
我看了一些教程,但大多数都有很多额外的代码,我很困惑.
我ItemsControl在WPF中使用了一个窗口.itemscontrol与集合绑定,集合是一组视图模型(用户控件).我的问题 - 由于集合中的许多视图模型,视图超出了当前窗口.我用滚动条尝试了很多东西来处理它但没用.有什么建议?问题是如何在窗口中包含itemscontrol(滚动)?
下面的XAML
<Window x:Class="WpfApplicationTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:app="clr-namespace:WpfApplicationTest"
Title="MainWindow" Height="350" Width="525">
<Grid Height="Auto">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<ItemsControl Grid.Row="0" Grid.Column="0" ItemsSource="{Binding UserControlCollection}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
<StackPanel Grid.Row="1" Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Bottom">
<Button Content="OK" Width="100" Margin="3" />
<Button Content="Cancel" Width="100" Margin="3" />
</StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我有一个WPF应用程序,它使用(当前)本地数据库作为绑定源.使用Visual Studio 2010工具,我有一个LINQ-SQL模型,它充当大多数表单的Datacontext.
我有一个带有TextBox和Datagrid的UserControl.使用表在UserControl.Loaded事件上设置datagrid ItemSource.TextBox分配了一个事件,以便在文本更改并在datagrid上更新ItemSource时对数据库执行查询.
这个问题是查询数据库所需的时间.因为我正在为每次搜索重新分配DataGrid项目源.
我应该在UserControl加载时加载所有记录 - 有没有办法在BackgroundWorker或类似工具中异步加载记录?
我需要在每次搜索后重新分配DataGrid ItemsSource,还是更有效的过滤数据的方法?
谢谢.利亚姆
<UserControl x:Class="Tracker.DocumentsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<DataGrid AutoGenerateColumns="False" Margin="12,34,12,50" Name="dataGrid1">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=ID}" Header="ID" />
<DataGridTextColumn Binding="{Binding Path=Reference}" Header="Reference" />
<DataGridTextColumn Binding="{Binding Path=Subject}" Header="Subject" />
</DataGrid.Columns>
</DataGrid>
<TextBox HorizontalAlignment="Left" Margin="64,8,0,0" Name="txtSearchBox" VerticalAlignment="Top" Width="224" TextChanged="txtSearchBox_TextChanged" />
<TextBlock Text="Search" HorizontalAlignment="Left" Margin="11,12,0,0" Name="label1" VerticalAlignment="Top" Height="23" />
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
码:
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Tracker.Model;
namespace …Run Code Online (Sandbox Code Playgroud) 任何人都可以请告诉我如何禁用listview水平和垂直线可见性设置为false.like在数据网格中我们使用属性gridLine = false.So是否有任何listview选项?
我有绑定问题:看我的代码
这是Xaml代码:
<ItemsControl x:Name="lbOpenInvoices" ItemsSource="{Binding Path=ocOpenInvoices}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="3" VerticalAlignment="Top" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button x:Name="btnOpenInvoice" Click="btnOpenInvoice_Click" Style="{StaticResource OpenInvoicesButton}">
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Converter={StaticResource InvoiceNoTableNo}}"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<TextBlock Text="{Binding Converter={StaticResource InvoiceNoInvoiceId}}"/>
<TextBlock Text="{Binding TotalAmount}" FontSize="14" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</StackPanel>
<TextBlock Text="{Binding Converter={StaticResource InvoiceDateTime}}"/>
</StackPanel>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
在Code后面我已经声明了ocOpenInvoices ObservableCollection:
public ObservableCollection<Invoice> ocOpenInvoices { get; set; }
Run Code Online (Sandbox Code Playgroud)
在我的Window Loadded事件中:
void SaleWindow_Loaded(object sender, RoutedEventArgs e)
{
this.DataContext = this;
}
Run Code Online (Sandbox Code Playgroud)
但它驱使我疯狂,因为ItemControl不响应ocOpenInvoices ObservableCollection.
当我从代码隐藏中给它ItemsSource它工作:(,我试图给它ElementName但它仍然没有响应.
请你帮忙告诉我我的问题是什么?我想念的是什么?提前致谢.
我将A绑定ToolBar到命令视图模型对象的集合。集合中的对象具有一个属性IsSeparator,当为true时,我想<Separator/>在中用表示ToolBar。
我的基本标记如下所示:
<ToolBar Grid.Row="1" ItemsSource="{Binding Path=ToolBarCommands}">
<ToolBar.ItemTemplate>
<DataTemplate>
<Button ToolTip="{Binding Path=ToolTip}" Command="{Binding Path=Command}">
<Button.Content>
<Image Width="16" Height="16" Source="{Binding Path=IconStream}"/>
</Button.Content>
</Button>
</DataTemplate>
</ToolBar.ItemTemplate>
</ToolBar>
Run Code Online (Sandbox Code Playgroud)
我在s的这个示例中玩过ItemContainerStyle很多,但没有用。MenuItem
任何帮助表示赞赏。
itemsource ×8
wpf ×8
datagrid ×3
c# ×2
itemscontrol ×2
data-binding ×1
database ×1
datacontext ×1
datatemplate ×1
listbox ×1
listview ×1
mvvm ×1
separator ×1
toolbar ×1
xaml ×1