2010-03-10 47 views
0

我到底想做什麼就是有兩個表,即user和userprofile,它們都有幾乎相同的字段。我將以電子郵件字段爲例。有一個文本框,並在其中顯示用戶表電子郵件字段值。我想要做的是,有一個上下文菜單,當用戶右鍵單擊文本框時,菜單將同時顯示User和UserProfile電子郵件字段值。 - 開發人員1小時前
無論從上下文菜單中選擇什麼值,文本框都會顯示該值。你可以使用綁定Email1和綁定Email2,因爲我沒有問題從數據庫中獲取這兩個值,所以我會相應地更改我的代碼。由於我是WPF和.NET框架本身的新手,我不確定如何實現這一點。如果我這次讓自己清楚,請讓我知道。 我不知道如何處理命令和事件。任何人都可以告訴我的代碼accomalish這個..文本框的上下文菜單

<TextBox Style="{StaticResource FieldStyle}" Text="{Binding Email1, UpdateSourceTrigger=PropertyChanged}"> 
          <TextBox.BorderBrush> 
           <MultiBinding Converter="{StaticResource TextBoxBorderConverter}"> 
            <Binding Path="Email1"/> 
            <Binding Path="Email2"/> 
           </MultiBinding> 
          </TextBox.BorderBrush> 
         </TextBox> 

在此先感謝

+2

這不是問題。 – Jay 2010-03-10 19:27:47

+0

看起來你很難在這裏回答問題,所以你可能想考慮改變你問他們的方式。試試這樣的格式:從一個前提和一個小背景開始;用你試過的代碼塊來跟蹤它;最後問這個問題。 – 2010-03-10 19:35:31

+0

絕對不是一個措辭良好的「問題」,但我認爲他有兩個電子郵件地址來源,他只是想讓用戶從上下文菜單中選擇「正確的」。 – Dave 2010-03-10 19:44:09

回答

6

在的給你一個WPF/MVVM小白的答案,得到火燒的危險,在這裏不用。因爲我從來沒有這樣做過,所以我不能建議你使用數據庫進行數據綁定,所以我只會給你XAML,這取決於你在數據庫端工作。

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid> 
     <TextBox Height="28" Text={Binding PreferredEmail}"> 
     <TextBox.ContextMenu> 
      <ContextMenu> 
      <MenuItem Header="{Binding Email1}" Command="{Binding Email1Command}" /> 
      <MenuItem Header="{Binding Email2}" Command="{Binding Email2Command}" /> 
      </ContextMenu> 
     </TextBox.ContextMenu> 
     </TextBox> 
    </Grid> 
</Page> 

在數據綁定到對象的情況下,PreferredEmail,EMAIL1,和電子郵件2將綁定到一個依賴屬性或引發PropertyChanged事件的性質。這就是你的ViewModel(或者你想調用底層代碼的任何東西)將更新數據的方式。如果您在代碼隱藏中更改這些值,最終它會自動反映到上下文菜單中。然後你必須實現兩個基於ICommand的類來處理PreferredEmail的設置。

我認爲實施兩個命令處理程序是超級跛腳,如果您必須添加更多電子郵件源,它肯定不會很好地擴展。我認爲更好的解決方案是使用一個命令處理程序和一個CommandParameter,它是所選的MenuItem標題,但我不知道該怎麼做。但無論如何,如果你處於綁定狀態,那麼這兩個命令處理程序解決方案仍然可以工作。

+0

我真的很抱歉,沒有正確的框架問題。我是WPF的新手,所以我可能會根據技術細節執行任務。 我想要做的是有2個表,即用戶和userprofile,他們都有幾乎相同的字段。我將以電子郵件字段爲例。 有一個文本框,並在其中顯示用戶表電子郵件字段值。我想要做的是,有一個上下文菜單,當用戶右鍵單擊文本框時,菜單將同時顯示User和UserProfile電子郵件字段值。 – developer 2010-03-10 20:32:08

+0

..繼續.. 無論從上下文菜單中選擇什麼值,文本框都會顯示該值。你可以使用綁定Email1和綁定Email2,因爲我沒有問題從數據庫中獲取這兩個值,所以我會相應地更改我的代碼。 由於我是WPF和.NET框架本身的新手,我不確定如何實現這一點。 請讓我知道這次是否讓我自己清醒。 – developer 2010-03-10 20:34:52

+0

Dave從你發佈的上述代碼中,Header會給出上下文菜單的email1值,但Command =「{Binding Email1Command}」會做什麼。我不知道如何編碼,當用戶選擇它時,將在文本框中顯示email1或email2的值。 – developer 2010-03-10 20:40:19