Tag: data binding

如何摆脱DataContext InitializeComponent中的StackOverflowexception?

我是wpf c#的新手,尝试一些示例应用程序,问题是当我在xaml中提到DataContext时, InitializeComponent被递归调用并显示 mscorlib.dll中发生了System.StackOverflowException 这是我的XAML标记: XAML.cs : private ICommand m_ButtonCommand; public ICommand ButtonCommand { get { return m_ButtonCommand; } set { m_ButtonCommand = value; } } public MainWindow() { InitializeComponent(); ButtonCommand = new RelayCommand(new Action(ShowEmployees)); }

如何在Mvvmcross中使用CanExecute

我有一个按钮 我有一个命令 public IMvxCommand DisconnectCommand { get { return new MvxRelayCommand(this.GetService().Disconnect); } } 然后我想使用启用/禁用DisconnectCommand DisconnectCommand.CanExecute(this.GetService().UsbConnected); 但这显然是错误的(它不起作用),我把检查作为一个参数,但通常我会这样做 DisconnectCommand.CanExecute = someBool; 但是没有设置属性,那么如何解决这个问题呢?

异步添加到ObservableCollection(或替代)

这就是我所拥有的 – 一个ListBox,其ItemsSource设置为ObservableCollection – 其中T是我的自定义类,表示一个文件,只包含2个DependencyProperties:Filename和ThumbnailPath。 – 列表框还定义了自定义DataTemplate,以便在其下很好地显示图像和文件名。 列表框的目的是显示当前文件夹中的video文件(在TreeView中选择),缩略图(异步生成;不是此问题的一部分)。 因此,当我更改TreeView中的文件夹时,ObservableCollection将被清除并再次填充,这将自动反映在ListBox项目中。 问题在于:UI变得无法响应,更新需要几秒钟。 同样,缩略图在这里没有意义(我尝试禁用它们)。 我认为花费最多时间的是构建我自定义类的50-100个实例及其可视化表示 – 它必须为每个实例初始化一个Image对象。 但这只是我的猜测 – 你能否确认或排除这种可能性? 我开始认为ObservableCollection可能不是这里的方式 ,因为根据我的阅读和我尝试的内容,没有办法异步添加项目,至少如果这些项目是DependencyObjects。 我尝试使用BackgroundWorker创建我的类实例,并将它们添加到ProgressChanged事件处理程序中的集合中,但它会抛出exception(某些线程与dependencyobjects问题)。 有什么东西我不见了吗? 或者通过简单地抛弃ObservableCollection并编写一个好的旧异步for循环来添加项目,我会更好吗?

如何将复杂对象绑定到DataGridView?

我有一个遵循表格的类: public class Cat { public string Name { get; set; } public string Description {get; set; } public List Cheezbugers { get; private set; } }; public class Cheezburger { public int PattyCount { get; set; } public bool CanHaz { get; set; } }; 我希望能够在DataGridView显示一个Cats List ,如下所示: ——————————————————————————— | Name | Description | […]

如何从()=> foo.Title表达式获取对象实例

我有一个带有属性的简单类 class Foo { string Title { get; set; } } 我试图通过调用函数来简化数据绑定 BindToText(titleTextBox, ()=>foo.Title ); 这被宣布为 void BindToText(Control control, Expression<Func> property) { var mex = property.Body as MemberExpression; string name = mex.Member.Name; control.DataBindings.Add(“Text”, ??? , name); } 那我该怎么办??? 对于我的Foo类的实例。 如何从lambda表达式中获取对调用foo实例的引用? 编辑:实例应该在某处,因为我可以调用property.Compile()并创建一个在我的BindToText函数中使用foo实例的委托。 所以我的问题是,如果可以在不添加函数参数中实例的引用的情况下完成此操作。 我呼吁Occum的Razor提供最简单的解决方案。 编辑2:许多人没有注意到的是在我的函数中访问foo实例时存在的闭包 ,如果我编译lambda。 为什么编译器知道在哪里找到实例,我不知道? 我坚持认为必须有一个答案, 而不必通过额外的论证。 解 感谢VirtualBlackFox的解决方案是这样的: void BindText(TextBoxBase text, Expression<Func> property) […]

在另一个类中更改先决条件属性时,为依赖属性引发PropertyChanged?

我有这个class级: public class Bank : INotifyPropertyChanged { public Bank(Account account1, Account account2) { Account1 = account1; Account2 = account2; } public Account Account1 { get; } public Account Account2 { get; } public int Total => Account1.Balance + Account2.Balance; public event PropertyChangedEventHandler PropertyChanged = delegate { }; public void RaisePropertyChanged([CallerMemberName] string propertyName = null) { […]

将DataTemplate中的按钮绑定到窗体的ViewModel中

我的问题类似于这个问题中描述的问题: DataTemplate中的WPF MVVM按钮控件绑定 这是我的XAML: <!—-> 它只是一个ListBox ,绑定到名为CommandSets的ObservableCollection (位于ViewModel中)。 此绑定有效(它显示集合中每个项目的按钮)。 现在我想将按钮绑定到命令( FireCommand ),该命令也在ViewModel中。 这是ViewModel的相关部分: public class MainWindowViewModel : INotifyPropertyChanged { public ICommand FireCommand { get; set; } public ObservableCollection CommandSets { get; set; } public MainWindowViewModel() { this.FireCommand = new RelayCommand(new Action(this.FireMissile)); } private void FireMissile(Object obj) { System.Windows.MessageBox.Show(“fire”); } } 此按钮的绑定不起作用。 根据我从上面链接的问题中理解,绑定不起作用,因为: (如我错了请纠正我) 该按钮位于ListBox内部,因此它只“知道” ListBox的绑定(在本例中为ObservableCollection […]

CompositeCollection + CollectionContainer:将CollectionContainer.Collection绑定到ViewModel的属性,该属性用作DataTemplates DataType

我没有获得正确的Binding语法来访问在其资源中定义CompositeCollection的MyViewModel中的DateTemplate的Cats and Dogs属性。 public class MyViewModel { public ObservableCollection Cats { get; private set; } public ObservableCollection Dogs { get; private set; } } 我要为????插入什么? 将Dogs and Cats集合绑定到CollectionContainer s?

按钮样式的内容仅出现在一个Button实例中

我有一个Viewbox: 然后我将其包含在样式中: 现在我使用SampleStyle创建了许多按钮 但是, 只有一个按钮具有椭圆(视图框) 如何让所有按钮都显示/显示椭圆?