我正在创建一个WPF应用程序,并且需要在页面的顶部显示一个邮寄地址。下面的邮寄地址将是产品信息。产品信息从数据源返回并绑定到datacontext。例如this.DataContext = myComplexType;
员工需要手动切换要显示的邮寄地址。我认为最好的方法是通过单选按钮控件进行选择。换句话说,在我的页面上,我将有3个单选按钮,*英国地址*美国地址*中国地址,并根据选择的内容,在页面顶部的文本块Name="txbPostalAddress“中输入适当的文本。
邮寄地址位于一个名为addresses的类中(作为字符串)。例如,代码:
namespace DAL
{
public class Addresses
{
public string GctHkAddress { get { return gctHkAddress;} }
public string GctUsaAddress { get { return gctUsaAddress; } }
public string GctUkAddress { get{return gctUkAddress;} }
private string gctHkAddress = "Company Name\n Hong Kong \n";
private string gctUsaAddress = "Company Name\n USA \n";
private string gctUkAddress = "Company Name\n UK \n";
}
}我的问题是,绑定应该在XAML中完成,还是在后台代码中完成。我可以很容易地在后台代码中做到这一点,但我感觉这否定了XAML的强大功能。有没有人知道哪种方法更好,如果是通过XAML,是否知道如何使用或链接到教程等?
谢谢
戴夫
发布于 2012-05-10 22:05:37
如果您的问题是在哪里设置DataContext,只是有时会有所不同,否则无关紧要。
通常将ViewModel (简而言之,包含数据和命令的类)设置为DataContext。
它可以通过以下方式完成
发布于 2012-05-10 22:04:57
如果您计划使用MVVM,那么XAML是最佳选择,否则您也可以在后台代码中完成这项工作
发布于 2012-05-11 02:05:44
您可以使用任意数量的数据上下文,只要它位于不同的控件中即可。例如,您可以有一个负责格式化的Address UserControl,一个保存可用地址列表的ViewModel上的addresses属性,以及一个保存Addresses列表中所选地址的CurrentAddress属性。如果地址有几行,您可能希望将地址设置为对象,而不仅仅是字符串。
您的XAML可能如下所示:
<Page>
<!-- Page DataContext would be set in code behind. This would be the main ViewModel -->
<my:AddressUserControl DataContext="{Binding CurrentAddress}"/>
<ComboBox ItemsSource="{Binding Addresses}" SelectedItem="{Binding CurrentAddress}" DisplayMemberPath="CompanyName"/>
<!-- more controls -->
</Page>https://stackoverflow.com/questions/10535502
复制相似问题