Tag: 数据绑定

图像UriSource和数据绑定

我试图将自定义对象的列表绑定到WPF图像,如下所示: <Image> <Image.Source> <BitmapImage UriSource="{Binding Path=ImagePath}" /> </Image.Source> </Image> 但它不起作用。 这是我得到的错误: “必须设置属性”UriSource“或属性”StreamSource“。 我错过了什么?

将WPFcombobox绑定到自定义列表

我有一个ComboBox似乎并没有更新SelectedItem / SelectedValue。 ComboBox ItemsSource被绑定到ViewModel类的一个属性上,它将一大堆RAS电话簿条目列为一个CollectionView,然后我将SelectedItem或SelectedValue绑定到ViewModel的另一个属性(在不同的时间)。 我在Save命令中添加了一个MessageBox来debugging由数据绑定设置的值,但是SelectedItem / SelectedValue绑定没有被设置。 ViewModel类看起来像这样: public ConnectionViewModel { private readonly CollectionView _phonebookEntries; private string _phonebookeEntry; public CollectionView PhonebookEntries { get { return _phonebookEntries; } } public string PhonebookEntry { get { return _phonebookEntry; } set { if (_phonebookEntry == value) return; _phonebookEntry = value; OnPropertyChanged("PhonebookEntry"); } } } _phonebookEntries集合正在业务对象的构造函数中初始化。 ComboBox XAML看起来像这样: […]

如何将CollectionContainer绑定到视图模型中的集合?

我有一个属性的视图模型,公开了一些东西。 我有一个ComboBox的ItemsSource属性绑定到这个集合。 现在用户可以从列表中select。 我想让用户清除select,所以我想添加一个项目(即空)到combobox。 这非常简单。 我决定尝试为ItemsSource使用CompositeCollection,以便将现有列表中的项目添加到combobox以及额外的Null项目。 经过这一段时间,我决定返回到CompositeCollection类的文档。 我复制他们的例子,并修改它使用视图模型,而不是静态资源。 当我将CollectionContainer绑定到ViewModel公开的列表时,我发现列表中没有任何项目出现在列表中。 我不知道如何解决这个问题,我正在寻找关于这个主题的任何build议。 这是我的XAML代码: <Window Background="CornflowerBlue" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:c="clr-namespace:TryingWPF" x:Class="CompositeCollections" Title="CompositeCollections" SizeToContent="WidthAndHeight"> <Window.Resources> <c:CompositeCollectionVM x:Key="CompositeCollectionVM"/> <XmlDataProvider x:Key="GreekHeroesData" XPath="GreekHeroes/Hero"> <x:XData> <GreekHeroes xmlns=""> <Hero Name="Jason" /> <Hero Name="Hercules" /> <Hero Name="Bellerophon" /> <Hero Name="Theseus" /> <Hero Name="Odysseus" /> <Hero Name="Perseus" /> </GreekHeroes> </x:XData> </XmlDataProvider> <DataTemplate DataType="{x:Type c:GreekGod}"> <TextBlock Text="{Binding Path=Name}" […]

将只读GUI属性返回到ViewModel

我想写一个ViewModel总是知道从视图的一些只读依赖项属性的当前状态。 具体来说,我的GUI包含一个FlowDocumentPageViewer,它从FlowDocument一次显示一个页面。 FlowDocumentPageViewer公开了两个名为CanGoToPreviousPage和CanGoToNextPage的只读依赖项属性。 我希望我的ViewModel始终知道这两个View属性的值。 我想我可以用OneWayToSource数据绑定来做到这一点: <FlowDocumentPageViewer CanGoToNextPage="{Binding NextPageAvailable, Mode=OneWayToSource}" …> 如果允许的话,这将是完美的:每当FlowDocumentPageViewer的CanGoToNextPage属性发生变化时,新的值将被下推到ViewModel的NextPageAvailable属性中,这正是我想要的。 不幸的是,这不能编译:我得到一个错误,说'CanGoToPreviousPage'属性是只读的,不能从标记设置。 显然,只读属性不支持任何types的数据绑定,甚至不支持对该属性只读的数据绑定。 我可以让我的ViewModel的属性为DependencyProperties,并使OneWay绑定到另一种方式,但我不是疯狂的关注分离违规(ViewModel将需要一个引用的视图,MVVM数据绑定应该避免)。 FlowDocumentPageViewer不公开一个CanGoToNextPageChanged事件,我不知道从DependencyProperty获得更改通知的任何好方法,但创build另一个DependencyProperty绑定它,这似乎在这里矫枉过正。 如何让我的ViewModel通知视图的只读属性的变化?

绑定到静态属性

我很难将简单的静态string属性绑定到文本框。 这是与静态属性的类: public class VersionManager { private static string filterString; public static string FilterString { get { return filterString; } set { filterString = value; } } } 在我的xaml中,我只想将这个静态属性绑定到一个文本框中: <TextBox> <TextBox.Text> <Binding Source="{x:Static local:VersionManager.FilterString}"/> </TextBox.Text> </TextBox> 一切都编译完成,但在运行时,我得到以下exception: 无法将属性“Source”中的值转换为“System.Windows.Markup.StaticExtension”types的对象。 对象'System.Windows.Data.Binding'在标记文件'BurnDisk; component / selectversionpagefunction.xaml'Line 57 Position 29。 任何想法我做错了什么?

INotifyPropertyChanged与ViewModel中的DependencyProperty

当在Model-View-ViewModel体系结构的WPF应用程序中实现ViewModel时,似乎有两个主要的select如何使它成为数据绑定的。 我见过使用DependencyProperty实现视图将要绑定的属性,我已经看到实现INotifyPropertyChanged的ViewModel。 我的问题是我应该什么时候比另一个更喜欢? 有任何性能差异? 将ViewModel依赖关系提供给WPF真的是个好主意吗? 做出devise决定时还需要考虑什么?

如何将RadioButtons绑定到一个枚举?

我有这样的枚举: public enum MyLovelyEnum { FirstSelection, TheOtherSelection, YetAnotherOne }; 我在我的DataContext中有一个属性: public MyLovelyEnum VeryLovelyEnum { get; set; } 我的WPF客户端中有三个RadioButton。 <RadioButton Margin="3">First Selection</RadioButton> <RadioButton Margin="3">The Other Selection</RadioButton> <RadioButton Margin="3">Yet Another one</RadioButton> 现在我该如何将RadioButtons绑定到该属性以进行正确的双向绑定?

我如何使用WPF绑定与RelativeSource?

我如何使用WPF绑定RelativeSource和什么是不同的使用情况?

数据绑定在AngularJS中如何工作?

数据绑定如何在AngularJS框架中工作? 我没有在他们的网站上find技术细节。 当数据从视图传播到模型时,它如何工作或多或less都很清楚。 但是,AngularJS如何在没有setter和getters的情况下跟踪模型属性的变化? 我发现有JavaScript的观察者可以做这个工作。 但是它们在Internet Explorer 6和Internet Explorer 7中不受支持。 那么AngularJS如何知道我改变了以下内容,并在视图上反映了这种变化? myobject.myproperty="new value";

如何将WPF DataGrid绑定到可变数量的列?

我的WPF应用程序会生成一组数据,每次可能有不同数量的列。 在输出中包含将用于应用格式的每一列的描述。 输出的简化版本可能是这样的: class Data { IList<ColumnDescription> ColumnDescriptions { get; set; } string[][] Rows { get; set; } } 这个类被设置为WPF DataGrid上的DataContext,但我实际上是以编程方式创建列: for (int i = 0; i < data.ColumnDescriptions.Count; i++) { dataGrid.Columns.Add(new DataGridTextColumn { Header = data.ColumnDescriptions[i].Name, Binding = new Binding(string.Format("[{0}]", i)) }); } 有没有办法用XAML文件中的数据绑定代替这个代码?