1

我目前在 Windows 窗体中有一个带有用户界面的应用程序。此用户界面背后的代码与服务通信。

例如,我有以下代码:

public partial class MainWindow : Window
{
    private KeyLessAccessLogic ServiceLogic;

    public MainWindow()
    {
        InitializeComponent();
        ServiceLogic = new KeyLessAccessLogic();
       //LoadValues();
    }

    public KeyLessAccessLogic MyServiceLogic
    {
        get { return ServiceLogic; }
        set
        {
            ServiceLogic = value;
           // RaisePropertyChanged("MyServiceLogic");
        }
    }
    private void BindDataSource()
    {
        cmb_user_name.DataSource = null;
        cmb_user_name.Sorted = false;
        cmb_user_name.DataSource = ServiceLogic.Users;
        cmb_user_name.DisplayMember = "name";
    }

还有我的 XAML:

    <ComboBox Height="23" HorizontalAlignment="Left" Margin="6,71,0,0" 
     Name="cmb_user_update" VerticalAlignment="Top" Width="120" 
     ItemsSource="{Binding Path=MyServiceLogic.Users}" DisplayMemberPath="name" />

现在我在 WPF 中重新创建了 UI,我对新格式有点迷失了。我确实相信我在这里给出的示例是 WPF 和 Windows 窗体之间差异的示例之一。

如何让我的应用程序知道 Dropdown-box 的数据源应该是什么cmb_user_nameServiceLogic是我的服务的中心块,例如访问数据库。

第二件事是,我有一个列表框来向我展示一些设备。我尝试以不同的方式处理数据源以显示我还尝试过的其他内容:

    <ListBox Height="100" HorizontalAlignment="Left" Margin="6,44,0,0" 
     Name="listBox_detected" VerticalAlignment="Top" Width="120" 
     ItemsSource="{Binding Path=ServiceLogic.TheDevicesList}" DisplayMemberPath="name" />
4

1 回答 1

1

用于XAML

<ComboBox ItemsSource="{Binding MyServiceLogic.Users}" 
    SelectedItem="{Binding User}" 
    DisplayMemberPath="name" />

ServiceLogic在你的创建一个属性ViewModel来保存一个ServiceLogic对象:

private ServiceLogic myServiceLogic;
public ServiceLogic MyServiceLogic 
{
    get { return  myServiceLogic; }
    set
        {
            myServiceLogic = value;
            RaisePropertyChanged("MyServiceLogic");
        }
}

我假设UsersObservableCollection. 或者您可以创建一个直接保存Users集合的属性。

于 2013-02-20T12:47:52.453 回答