我ListBox在我的wpf窗口中绑定了一个ObervableCollection.如果有人点击了某个元素ListBox(就像链接一样),我想打开浏览器.谁能告诉我怎么做?我发现了listboxviews的一些东西,它只是以这种方式工作还是有一种方法只是使用ListBox?
你的
塞巴斯蒂安
我正在寻找建立一个与git密切联系的应用程序.
是否有可用的语言绑定,如果有,哪些是最全面的?
这是否意味着去Bare Metal C?
或者perl/python/php/C#有一组完整的绑定吗?
谢谢
丹尼尔
是否有更短/更清晰的方法来进行null/undefined测试?
<select data-bind="options: SelectedBusinessLine() ? SelectedBusinessLine().Clusters() : [],
optionsText: 'Title',
value: SelectedCluster,
optionsCaption: 'Select Cluster..'">
</select>
Run Code Online (Sandbox Code Playgroud)
代替
data-bind="options: SelectedBusinessLine() ? SelectedBusinessLine().Clusters() : [],
Run Code Online (Sandbox Code Playgroud)
我想要
data-bind="options: SelectedBusinessLine().Clusters(),
Run Code Online (Sandbox Code Playgroud)
给(或)拿()
或者至少一个更简单的空操作符检查'??' SelectedBusinessLine ?? []
或者是一个自动检查null或silent失败的绑定参数.
任何想法,如果这是可能的?
有没有办法列出jQuery元素上的所有绑定?jQuery的bind()似乎只是附加它们,我没有找到一个确实得到绑定的jQuery函数.
[编辑]:我想出了如何自己做这件事.我发布了我的解决方案,希望能在几天谷歌上搜索其他人.如果您是WPF大师,请查看我的解决方案,让我知道是否有更好/更优雅/更有效的方法来做到这一点.特别是,我有兴趣知道我不知道的...这个解决方案怎么会让我不知所措?问题实际上归结为暴露内部控制属性.
问题:我正在创建一些代码,以便在WPF中为XML文件自动生成数据绑定GUI.我有一个xsd文件,可以帮助我确定节点类型等.简单的键/值元素很容易.
当我解析这个元素时:
<Key>value</Key>
Run Code Online (Sandbox Code Playgroud)
我可以创建一个新的'KeyValueControl'并设置DataContext为这个元素.KeyValue被定义为UserControl,并且只有一些简单的绑定.它适用于任何简单的XElement.
此控件中的XAML如下所示:
<Label Content={Binding Path=Name} />
<TextBox Text={Binding Path=Value} />
Run Code Online (Sandbox Code Playgroud)
结果是一行包含带有元素名称的标签和一个带有我可以编辑的值的文本框.
现在,有时我需要显示查找值而不是实际值.我想创建一个类似于上面KeyValueControl的'KeyValueComboBox',但是能够指定(基于文件中的信息)ItemsSource,Display和Value路径.'Name'和'Value'绑定与KeyValueControl相同.
我不知道标准用户控件是否可以处理这个问题,或者我是否需要从Selector继承.
控件中的XAML看起来像这样:
<Label Content={Binding Path=Name} />
<ComboBox SelectedValue={Binding Path=Value}
ItemsSource={Binding [BOUND TO THE ItemsSource PROPERTY OF THIS CUSTOM CONTROL]
DisplayMemberPath={Binding [BOUND TO THE DisplayMemberPath OF THIS CUSTOM CONTROL]
SelectedValuePath={Binding [BOUND TO THE SelectedValuePath OF THIS CUSTOM CONTROL]/>
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我会做这样的事情(假设这个节点是'Thing'并且需要显示Things列表,以便用户可以选择ID:
var myBoundComboBox = new KeyValueComboBox();
myBoundComboBox.ItemsSource = getThingsList();
myBoundComboBox.DisplayMemberPath = "ThingName";
myBoundComboBox.ValueMemberPath = "ThingID"
myBoundComboBox.DataContext = thisXElement;
...
myStackPanel.Children.Add(myBoundComboBox)
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
1)我应该从Control或Selector继承我的KeyValueComboBox吗?
2)如果我应该从Control继承,我如何公开内部组合框的ItemsSource,DisplayMemberPath和ValueMemberPath以进行绑定?
3)如果我需要继承Selector,有人可以提供一个小例子来说明我如何开始使用它吗?再说一次,我是WPF的新手,所以如果这是我需要走的路,一个好的,简单的例子真的会有所帮助.
我有一个类型为boolean的属性,带有复选框.
我想将其更改为绑定在同一属性上的两个radiobutton,其值为true/false.
怎么办?
如果绑定字符串为空,是否有标准方法为WPF绑定设置默认值或回退值?
<TextBlock Text="{Binding Name, FallbackValue='Unnamed'" />
Run Code Online (Sandbox Code Playgroud)
在FallbackValue似乎只在踢Name空,但不是当它被设置为String.Empty.
这是我的情况:
<ListBox ItemsSource="{Binding Path=AvailableUsers}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Id}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button Command="{Binding Path=Load}" CommandParameter={???? What goes here ????}/>
Run Code Online (Sandbox Code Playgroud)
我想要的是传递ListBox中当前选中的Id.我有幕后的viewmodel,基本上是这样的:
public class ViewModel : DependencyObject
{
ICommand Load { get; set; }
// dependency property but I didn't bother to write it out like one
List<User> AvailableUsers { get; set}
}
Run Code Online (Sandbox Code Playgroud)
如何使用xaml发送当前选定的项目?
任何人都有一个很好的例子如何深度克隆WPF对象,保留数据绑定?
明确的答案是第一部分.
第二部分是您必须创建一个ExpressionConverter并将其注入序列化过程.有关详细信息,请访问:http://www.codeproject.com/KB/WPF/xamlwriterandbinding.aspx?fid = 1428301&df = 90&mpp = 25&noise = 3&sort = Position&view = Quick&
select = 2801571
我是WPF的新手,试图建立一个项目,该项目遵循Josh Smith描述模型 - 视图 - 视图模型设计模式的优秀文章的建议.
使用Josh的示例代码作为基础,我创建了一个包含许多"工作区"的简单应用程序,每个工作区由TabControl中的选项卡表示.在我的应用程序中,工作空间是一个文档编辑器,它允许通过TreeView控件操作分层文档.
虽然我已成功打开多个工作区并在绑定的TreeView控件中查看其文档内容,但我发现TreeView在选项卡之间切换时"忘记"其状态.例如,如果Tab1中的TreeView部分展开,则在切换到Tab2并返回到Tab1后,它将显示为完全折叠.此行为似乎适用于所有控件的控件状态的所有方面.
经过一些实验,我意识到我可以通过将每个控件状态属性显式绑定到底层ViewModel上的专用属性来保留TabItem中的状态.然而,这似乎是很多额外的工作,当我只是希望我的所有控件在工作区之间切换时记住它们的状态.
我想我错过了一些简单的东西,但我不知道在哪里寻找答案.任何指导都将非常感谢.
蒂姆,谢谢
更新:
根据要求,我将尝试发布一些演示此问题的代码.但是,由于作为TreeView基础的数据很复杂,我将发布一个展示相同symtoms的简化示例.这是主窗口中的XAML:
<TabControl IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Path=Docs}">
<TabControl.ItemTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding Path=Name}" />
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<view:DocumentView />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
Run Code Online (Sandbox Code Playgroud)
上面的XAML正确绑定到DocumentViewModel的ObservableCollection,其中每个成员都通过DocumentView呈现.
为了简化这个例子,我从DocumentView中删除了TreeView(如上所述),并将其替换为包含3个固定标签的TabControl:
<TabControl>
<TabItem Header="A" />
<TabItem Header="B" />
<TabItem Header="C" />
</TabControl>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,DocumentView和DocumentViewModel之间没有绑定.运行代码时,内部TabControl在切换外部TabControl时无法记住其选择.
但是,如果我显式绑定内部TabControl的SelectedIndex属性...
<TabControl SelectedIndex="{Binding Path=SelectedDocumentIndex}">
<TabItem Header="A" />
<TabItem Header="B" />
<TabItem Header="C" />
</TabControl>
Run Code Online (Sandbox Code Playgroud)
...到DocumentViewModel上的相应虚拟属性...
public int SelecteDocumentIndex { get; set; }
Run Code Online (Sandbox Code Playgroud)
...内部标签能够记住它的选择.
我知道我可以通过将这种技术应用到每个控件的每个视觉属性来有效地解决我的问题,但我希望有一个更优雅的解决方案.
binding ×10
wpf ×7
c# ×3
listbox ×2
mvvm ×2
xaml ×2
boolean ×1
c ×1
clone ×1
combobox ×1
git ×1
javascript ×1
jquery ×1
knockout.js ×1
listboxitem ×1
radio-button ×1
state ×1
tabcontrol ×1