我正在尝试使用CollectionViewSource来显示一些数据,我看到的所有示例/教程都有一个自定义类,它们在另一个类中使用,它继承自ObservableCollection.我是使用CollectionViewSource的新手,这只是我的第三个MVVM实现,所以我可能会误解编程模式,但我的问题是:我在哪里放置ObservableCollection类和/或自定义类?
我觉得他们应该进入模型,但后来我不确定什么被绑定到View.我只是将它们构建为外部类,然后在Model/ViewModel中引用它们吗?
任何帮助表示赞赏
这就是发生的事情:在我的应用程序的表单加载中,我创建了一个后台工作器来绑定控件上的集合(数据库中记录填充到数据集中的记录)。但是问题是当我更新数据库上的记录时,如果我再次运行此过程,则会引发错误。
If xControl.InvokeRequired Then
Dim MyDelegate As New InitializeDataBinding_Delegate(AddressOf InitializeDataBinding)
Invoke(MyDelegate, New Object() {xControl, xQuery, xPrimaryKey}) ' ERROR HERE SAYING: Collection was modified; enumeration operation may not execute.
Else
Using ds As DataSet = New DataSet()
Using dbAdapter As MySqlDataAdapter = New MySqlDataAdapter(xQuery, ConnectionClass.ConnectionString)
dbAdapter.Fill(ds)
End Using
Dim dvm As DataViewManager = New DataViewManager(ds)
Dim iDataList As DataView = dvm.CreateDataView(ds.Tables(0))
For Each iBind As Binding In xControl.DataBindings
xControl.DataBindings.Remove(iBind)
Next
xControl.DataBindings.Add("EditValue", iDataList, xPrimaryKey)
xControl.Properties.DataSource = iDataList
xControl.EditValue = Nothing …Run Code Online (Sandbox Code Playgroud) 我有Button......
<Button Click="Button_Click" />
Run Code Online (Sandbox Code Playgroud)
我想CanClick以某种方式绑定一个布尔值.如果CanClick是false,则Click事件不应该火...
如何才能做到这一点?
我想将SQL查询的结果绑定到WPF接口的Listbox.我看到很多例子,我无法调整我的应用程序,以便正常工作.我使用这个代码:
string sqlStr1 = "SELECT Players.LastName FROM Players";
SqlDataAdapter dAdapt1 = new SqlDataAdapter(sqlStr1, cnStr);
DataSet dataSet1 = new DataSet();
dAdapt1.Fill(dataSet1);
List1.DataContext = dataSet1;
Run Code Online (Sandbox Code Playgroud)
并在xaml页面中:
<ListBox Name="List1" Grid.Column="1" Grid.Row="2" ></ListBox>
Run Code Online (Sandbox Code Playgroud)
绑定它们的方式是什么,以便在列表框中显示名称?
如果不在xaml页面中添加任何Binding,它会在我尝试运行时抛出异常.怎么了?
我有一个基本的中继器:
<asp:Repeater id="BlogDisplay" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td valign="top" align="left" style="font-weight:bold; padding-left:3px;">
<%# DataBinder.Eval(Container.DataItem, "Title")%>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
当我执行代码时,我得到一个异常: DataBinding: 'DocumentWebParts.BlogPostLost.BlogItem' does not contain a property with the name 'Title'.

所以你可能认为我的BlogItem对象没有Title属性 - 但事实并非如此!
public class BlogItem
{
public int Id;
public string Body;
public string Title;
public string Author;
public DateTime Published;
}
Run Code Online (Sandbox Code Playgroud)
并且该属性肯定正在设置 - 抛出一个断点显示所有值都已设置.
BlogItems = new List<BlogItem>();
SPListItem item;
foreach (SPListItem i in myItems)
{
//off-topic code hidden
BlogItem …Run Code Online (Sandbox Code Playgroud) 我正在使用本教程学习WPF数据绑定.
这是我的XAML:
Window x:Class="DataBinding_01.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:Person x:Key="PersonDataSource" Name="Joe"/>
</Window.Resources>
<DockPanel Height="Auto" Name="panel" Width="Auto" LastChildFill="True">
<TextBox DockPanel.Dock="Top" Height="23" Name="txtName" Width="Auto" />
<Button Content="Button" Name="button1" Width="Auto" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Click="button1_Click" />
</DockPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
public partial class MainWindow : Window
{
Person myPerson = null;
public MainWindow()
{
InitializeComponent();
myPerson = this.Resources["PersonDataSource"] as Person;
myPerson.NameProperty = "hi, again!";
}
}
public class Person
{
Person()
{
NameProperty = "hi";
}
Person(String _name)
{
NameProperty = _name; …Run Code Online (Sandbox Code Playgroud) 我有一个这样定义的GridView:
<ListView x:Name="colorLegend" Background="Transparent" ItemsSource="{Binding /Colors}">
<ListView.Resources>
<Style x:Key="myHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="Visibility" Value="Collapsed" />
</Style>
</ListView.Resources>
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}">
<GridViewColumn Header="Image" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Border Background="{Binding Brush}" Height="20" Width="40" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Path=Name}" Width="auto" />
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
我希望第一个单元格内的边框高度与单元格列的高度一样高。我可以将边框的高度绑定到第二个单元格的高度吗?
我想要的是能够更改第二个单元格的字体大小和第一个单元格的边框以调整大小以匹配更改?
谢谢!
我有一个列表框如何在页面的相应视图模型中处理keydown事件以删除listItems?我在视野中使用这种鳕鱼:
<ListBox Margin="2,25,2,2" Grid.Row="3" ItemsSource="{Binding Path=CardViewModelSearchResults}" SelectedItem="{Binding Path=SelectedCategoryViewModel, Mode=TwoWay}" IsSynchronizedWithCurrentItem="True">
<ItemsControl.ItemTemplate>
<DataTemplate >
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBox Grid.Row="0" Grid.Column="0" ff:TextBoxBehaviour.TextChangedCommand="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl, AncestorLevel=1}, Path=DataContext.TextChanged}" Text="{Binding Path=CategoryName}" FontSize="14" FontWeight="Normal" BorderThickness="0" AllowDrop="False" />
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Path=CategoryID}" FontSize="14" FontWeight="Normal" Visibility="Hidden" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud) 我有一个半全面的KO设置.但到目前为止,我只使用KO来呈现数据.
现在我需要增加/减少模型的值.
这是我的模型:
SharedItem: function (data) {
var self = {};
...
self.rating = ko.observable(data.Rating);
...
return self;
}
Run Code Online (Sandbox Code Playgroud)
这是我的观点
ItemsViewModel: function (json) {
var model = {};
model.shareditems = ko.observableArray();
var mappedSharedItems = [];
var parsedData = $.parseJSON(json);
$.each(parsedData, function (key, val) {
var newSharedItems = new SharedItem(val);
mappedSharedItems.push(newSharedItems);
});
//My function to vote
model.voteUp = function(item) {
item.rating += 1;
}
model.shareditems(mappedSharedItems);
return model;
}
Run Code Online (Sandbox Code Playgroud)
并且我的视图像任何标准的Knockout绑定一样应用(响应是我传递给viewmodel的ajax响应):
var viewModel = ItemsViewModel(response);
ko.applyBindings(viewModel, $('#ItemListWrapper')[0]);
Run Code Online (Sandbox Code Playgroud)
但我似乎无法弄清楚如何使我的voteUp功能增加评级号.
重要提示:该 …
我有一个控件:DailyHours.它有我创建的自定义TimeEdit控件的集合.每个控件都应绑定到DailyHours视图模型类.相反,它试图在TimeEdit控件中找到我绑定的值.
TimeEdit控件绑定的示例:
<bc:TimeEdit Time="{Binding CurrentOperatingHours.MondayClose}" ></bc:TimeEdit>
Run Code Online (Sandbox Code Playgroud)
TimeEdit控件有自己的小时和分钟内部值,它们绑定到小时和分钟属性.因此,TimeEdit控件的DataContext本身就是.
public TimeEdit()
{
InitializeComponent();
this.DataContext = this;
}
Run Code Online (Sandbox Code Playgroud)
但是,这会导致DailyHours控件错误地绑定时间值.它在TimeEdit控件中查找CurrentOperatingHours属性,而不是自己的视图模型.
如何让我的TimeEdit控件正确绑定内部值而不会干扰其父容器上的绑定?
data-binding ×10
wpf ×7
c# ×3
mvvm ×3
adapter ×1
asp.net ×1
autocomplete ×1
button ×1
gridview ×1
javascript ×1
jquery ×1
knockout.js ×1
repeater ×1
vb.net ×1
xaml ×1