【发布时间】:2012-03-26 09:06:15
【问题描述】:
我有一个包含 ItemControl 标记的 XAML 页面(应用程序使用 MVVM 轻框架):
<ItemsControl MinWidth="100" MinHeight="25" ItemsSource="{Binding Path=Options}" HorizontalAlignment="Left" d:LayoutOverrides="Height" Margin="10,0">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
此控件有一个项目源,它是选项对象的列表。本项控件的数据模板如下:
<DataTemplate DataType="{x:Type Sales:Option}">
<local:SalesOptionButton d:LayoutOverrides="Width, Height" DataContext="{Binding}"/>
</DataTemplate>
我有一个与 SalesOptionButton 控件关联的视图模型,如下所示:
公共类 SalesOptionButton { 私有字符串_name; 私有选项_Option;
public ICommand SelectedOptionButtonCommand { get; set; }
public string Name
{
get { return _name; }
set { SetStructPropertyValue(ref _name, value); }
}
public Option Option
{
get { return _scriptOption; }
set { SetPropertyValue(ref _scriptOption, value); }
}
public SalesScriptOptionButton(ScriptOption option)
{
Option = option;
Name = option.OptionText;
}
protected override void RegisterForMessages()
{
SelectedOptionButtonCommand = new RelayCommand(OptionButtonSelected);
}
private void OptionButtonSelected()
{
MessengerService.Send(ScriptOptionSelectedMessage.Create(ScriptOption));
}
protected override void SetDesignTimeInfo(){}
}
这是选项控件的 XAML:
<UserControl [INCLUDES]>
<Button Height="25" Padding="1" MinWidth="100" Content="{Binding Name}" Command="{Binding SelectedOptionButtonCommand}"/>
</UserControl>
这样做的目的是,为数据源中的每个选项创建一个按钮。这些按钮应显示选项的名称,并在单击按钮时向将处理该单击的主应用程序发送一条消息(设置选择的选项)。
我看到的问题是正在创建按钮,但没有绑定其他任何东西(按钮上没有显示选项名称,并且按钮单击不起作用)。谁能告诉我为什么这不像我认为的那样工作?
【问题讨论】:
-
你在哪里定义的:
<DataTemplate DataType="{x:Type Sales:Option}">
标签: c# wpf mvvm-light wcf-binding