如何将视图模型属性绑定到ListBox.SelectedItem属性? 我已经创build了一个简单的MVVM演示,试图找出这一个。 我的视图模型有这些属性: private ObservableCollection<DisneyCharacter> p_DisneyCharacters; public ObservableCollection<DisneyCharacter> DisneyCharacters { get { return p_DisneyCharacters; } set { p_DisneyCharacters = value; base.FirePropertyChangedEvent("DisneyCharacters"); } } private DisneyCharacter p_SelectedItem; public DisneyCharacter SelectedItem { get { return p_SelectedItem; } set { p_SelectedItem = value; base.FirePropertyChangedEvent("SelectedItem"); } } 我想将SelectedItem属性绑定到列表框中选定的项目。 这是列表框的XAML: <ListBox ItemTemplate="{StaticResource MasterTemplate}" ItemsSource="{Binding Path=DisneyCharacters}" SelectedItem="{Binding Path=Selectedtem, Mode=TwoWay}" HorizontalAlignment="Stretch" /> […]
我不明白WPF中的各种数据绑定模式,例如: 单程 双向 一次 等等… 每种模式都意味着什么? 什么时候应该使用?
假设你正在做类似下面的事情 List<string> myitems = new List<string> { "Item 1", "Item 2", "Item 3" }; ComboBox box = new ComboBox(); box.DataSource = myitems; ComboBox box2 = new ComboBox(); box2.DataSource = myitems 所以现在我们有2个combobox绑定到该数组,并一切工作正常。 但是,当您更改一个combobox的值时,它会将两个combobox更改为您刚select的combobox。 现在,我知道数组总是以引用的方式传递(知道当我学习C:D时),但为什么combobox在一起变化呢? 我不相信combobox控件正在修改集合。 作为解决办法,不要达到预期/期望的function性 ComboBox box = new ComboBox(); box.DataSource = myitems.ToArray();
更新说明: 上面的例子工作正常 ,因为1.0-rc4版本修复了需要不必要variables的问题。 原始问题: 我完全按照文档中所描述的那样工作: main.xml中: <layout xmlns:andr… <data> </data> <include layout="@layout/buttons"></include> …. buttons.xml: <layout xmlns:andr…> <data> </data> <Button android:id="@+id/button" …." /> MyActivity.java: … binding = DataBindingUtil.inflate… binding.button; ->cannot resolve symbol 'button' 如何获得button?
我有一个文本框的数据input页面。 文本框的绑定设置为TwoWay 。 我的视图模型中的数据只有在文本框失去焦点时才会更新。 如果我点击一个button(如保存),并且文本框仍然有焦点,则保存事件的视图模型中的文本框中的更改不会更改。 有没有办法让绑定保存文本框的值失去焦点之前? 或者我需要在保存事件中做些什么?
只有当我点击另一个控件时,MessageText属性才会更新。 更重要的是,如果我按任何button的Click处理程序不执行,而是执行MessageText集。 我打破了我的头。 <TextBox x:Name="messageText" Grid.Row="1" Grid.Column="0" TextWrapping="Wrap" Text="{Binding Path=MessageText, Mode=TwoWay}"/> private void ChatView_Loaded(object sender, RoutedEventArgs e) { DataContext = viewModel; } public string MessageText { get { return this.messageText; } set { this.messageText = value; OnProperyChanged("MessageText"); } }
如何在文本框中input新字符后立即进行数据绑定更新? 我正在学习WPF中的绑定,现在我陷入了一个(希望)简单的事情。 我有一个简单的FileLister类,您可以在其中设置Path属性,然后当您访问FileNames属性时,它将为您提供文件的列表。 这是这个class级: class FileLister:INotifyPropertyChanged { private string _path = ""; public string Path { get { return _path; } set { if (_path.Equals(value)) return; _path = value; OnPropertyChanged("Path"); OnPropertyChanged("FileNames"); } } public List<String> FileNames { get { return getListing(Path); } } private List<string> getListing(string path) { DirectoryInfo dir = new DirectoryInfo(path); List<string> result […]
考虑下面的控制器方法: @RequestMapping(value = "/test", method = RequestMethod.GET) public void test(@RequestParam(value = "fq", required = false) String[] filterQuery) { logger.debug(fq = " + StringUtils.join(filterQuery, "|")); } 这里是不同的fq组合的输出: /test?fq=foo导致fq = foo /test?fq=foo&fq=bar得到fq = foo|bar /test?fq=foo,bar导致fq = foo|bar /test?fq=foo,bar&fq=bash得到fq = foo,bar|bash /test?fq=foo,bar&fq= fq = foo,bar| 例3是这个问题。 我期望(需要/需要)它输出fq = foo,bar 。 我已经尝试用逗号\来避开逗号,并且使用%3C但是没有任何工作。 如果我看一下HttpServletRequest对象的版本: String[] fqs = request.getParameterValues("fq"); logger.debug(fqs = […]
所以我一直在四处搜寻,找不到如何做到这一点。 我正在创build一个使用MVVM的用户控件,并希望在“Loaded”事件上运行一个命令。 我意识到这需要一点点的代码,但我不能完全弄清楚需要什么。 该命令位于ViewModel中,它被设置为视图的datacontext,但我不确定如何路由这个,所以我可以从加载的事件后面的代码调用它。 基本上我想要的是这样的… private void UserControl_Loaded(object sender, RoutedEventArgs e) { //Call command from viewmodel } 环顾四周,我似乎无法find任何地方的语法。 我是否需要先绑定xaml中的命令才能引用它? 我注意到在用户控件中的命令绑定选项不会让你绑定的命令,因为你可以在像一个button的东西… <UserControl.CommandBindings> <CommandBinding Command="{Binding MyCommand}" /> <!– Throws compile error –> </UserControl.CommandBindings> 我确信有一个简单的方法来做到这一点,但我不能为我的生活弄清楚。
假设我有这样的界面: public interface ISomeInterface { … } 我也有几个类实现这个接口; public class SomeClass : ISomeInterface { … } 现在我有一个WPF ListBox列出ISomeInterface的项目,使用自定义的DataTemplate。 数据绑定引擎显然不会(我已经能够找出)允许我绑定到接口属性 – 它看到的对象是一个SomeClass对象,数据只显示如果SomeClass应该碰巧有约束属性可用一个非界面属性。 我怎么能告诉DataTemplate行事,如果每个对象是一个ISomeInterface,而不是一个SomeClass等? 谢谢!