2013-02-20 70 views
1

我目前在Windows窗體中有一個帶有用戶界面的應用程序。此用戶界面背後的代碼與服務進行通信。將UI從Windows窗體轉換爲WPF數據綁定

例如,我有以下代碼:

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" /> 

現在我重新創建UI在WPF,和我有點失去了對新格式。我相信我給出的例子是WPF和Windows窗體之間區別的例子之一。

如何讓我的應用程序知道下拉框cmb_user_name的數據源應該是什麼? ServiceLogic是我服務的中心塊,例如訪問數據庫。

第二件事,我有一個列表框來顯示一些設備。我試圖接近的數據源不同,顯示還有什麼我曾嘗試:

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

回答

1

使用XAML爲:

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

ViewModel創建屬性ServiceLogic舉行ServiceLogic對象:

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

我假設UsersObservableCollection。或者您可以直接創建一個包含Users集合的屬性。

+0

問題是它在'ServiceLogic'類中,而不是在viewmodel本身。 – Joetjah 2013-02-20 12:49:20

+0

@Joetjah查看編輯答案 – 2013-02-20 12:54:55

+0

我更新了我的問題。總之,我有一個問題:由於ServiceLogic使用數據庫中的數據,綁定會確保信息是正確的嗎?或者我應該在獲取數據時進行手動刷新?我的意思是,獲取綁定信息與更新不一樣,是嗎?也許你可以點亮這一點。我現在正在嘗試代碼 – Joetjah 2013-02-20 12:58:11