在WPF

2011-11-16 48 views
3

手動添加參考文本框在繼WPF代碼在WPF

//class level Variables 
public TextBox _txtDef = new TextBox(); 
public TextBox _txtComment = new TextBox(); 

//Events 
private void OnCommentsMouseDoubleClick(object sender, MouseButtonEventArgs e) 
{ 
    _txtComment = sender as TextBox; 
} 

private void OnDefinitionMouseDoubleClick(object sender, MouseButtonEventArgs e) 
{ 
    _txtDef = sender as TextBox; 
} 

標記

<WPFtoolkit:DataGridTemplateColumn x:Name="dgDefinition" Header="Definition" 
              Visibility="Collapsed" Width="300"> 
    <WPFtoolkit:DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <TextBlock Text="{Binding Path=Definition, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 
    </DataTemplate> 
    </WPFtoolkit:DataGridTemplateColumn.CellTemplate> 
    <WPFtoolkit:DataGridTemplateColumn.CellEditingTemplate> 
    <DataTemplate> 
     <TextBox x:Name="txtDefinition" 
       Text="{Binding Path=Definition, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
       BorderThickness="0" ContextMenuOpening="DefinitionContextMenuOpen" 
       MouseDoubleClick="OnDefinitionMouseDoubleClick"> 
     </TextBox> 
    </DataTemplate> 
    </WPFtoolkit:DataGridTemplateColumn.CellEditingTemplate> 
</WPFtoolkit:DataGridTemplateColumn> 

<WPFtoolkit:DataGridTemplateColumn x:Name="dgComment" Header="Comment" Width="200" 
            Visibility="Collapsed"> 
    <WPFtoolkit:DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <TextBlock Text="{Binding Path=Comment, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 
    </DataTemplate> 
    </WPFtoolkit:DataGridTemplateColumn.CellTemplate> 
    <WPFtoolkit:DataGridTemplateColumn.CellEditingTemplate> 
    <DataTemplate> 
     <TextBox x:Name="txtComment" 
       Text="{Binding Path=Comment, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
       BorderThickness="0" MouseDoubleClick="OnCommentsMouseDoubleClick"> 
     </TextBox> 
    </DataTemplate> 
    </WPFtoolkit:DataGridTemplateColumn.CellEditingTemplate> 
</WPFtoolkit:DataGridTemplateColumn> 

當我米點擊特定小區上述兩個事件中的一個被解僱並且因此僅該特定文本框的引用被添加,其事件被解僱。

當兩個事件中的任何一個被觸發時,是否有任何方法來添加兩個文本框的引用。

謝謝

+0

我想我不明白這個問題,但你已經有權訪問兩個TextBox實例。從你的代碼看,你有一個後面的代碼,它調用InitializeComponent,所以如果你給一個元素一個Name,你可以通過它的代碼訪問這個元素。除此之外,您可以使用附加屬性將一個文本框的引用存儲到另一個文本框,但是您應該小心使用硬引用。 – dowhilefor

+1

@dowhilefor文本框在模板中 - 所以名稱本身是不夠的 – Murph

回答

0

不幸的是沒有(IMO)。你寫了一個DataTemplate。這將爲您的網格中的每個條目立即執行。當事件被觸發時,你會得到TextBox作爲事件被觸發的發送者(正如你已經提到的那樣)。但我沒有看到

首先一個答案,我認爲這篇文章任何機會得到其他TextBox的實例(它可能不會是已經實例化)

+0

是否有任何解決方法,實際上在任何doubleclick事件中,我必須將TextBox的值發送到另一個窗口,並在處理值之後通過另一個窗口,我必須把這個處理過的值放回到這些文本框中。我能夠一次對任何一個TextBox執行此操作(用戶雙擊它的那個) – Abhi

+0

@AbhishekGupta:如上所述,我沒有看到任何解決方法 – Fischermaen

+0

Ya @Fischermaen。我同意。我在說什麼有沒有其他方法可以實現我在我的評論中提到的相同工作流程,而不是使用我發佈爲問題的方法。 – Abhi

0

好,:

http://blogs.msdn.com/b/wpfsdk/archive/2007/04/16/how-do-i-programmatically-interact-with-template-generated-elements-part-ii.aspx

可能會給你你需要的東西。但是...

爲什麼你需要同時獲得兩個文本框?我想更多地瞭解代碼結構,因爲我看到它的感覺不對。

+0

雙擊任何文本框我想要訪問兩個文本框的文本屬性發送到另一個頁面的內容,然後從頁面獲取內容,並將其分配到各自的文本框。 – Abhi

+0

你有雙向數據綁定 - 所以你應該有文本框中的數據? – Murph