我創建了一個相當簡單的UserControl
,它由TextBox
和ComboBox
組成。訪問自定義控件中多個控件的文本和內容
<StackPanel Orientation="Horizontal">
<MyNamespace:MultiBox Style="{StaticResource PhoneBoxStyle}" BoxType="Phone" Grid.Column="0" Grid.Row="0" Name="phoneNumber" Margin="50,0,5,5" MinWidth="250"/>
<ComboBox Grid.Column="1" Grid.Row="0" Height="{Binding ElementName=phoneNumber, Path=Height}" MinWidth="100" Name="callResultsSelection" ItemsSource="{Binding Source={StaticResource callResults}}" Margin="0,0,5,5"/>
</StackPanel>
我需要能夠然後使用一個按鈕的按下導出這些的.Text
& .SelectedItem
值。我嘗試使用下面的屬性,但它似乎不工作。它確實通過控件的IntelliSense公開.Text
屬性,但它不會按照預期將任何內容複製到剪貼板。
原始(和所需的)的方法:
public string Text
{
get { return phoneNumber.Text + " - " + callResultsSelection.SelectedItem + "\r\n"; }
set { value = phoneNumber.Text + " - " + callResultsSelection.SelectedItem + "\r\n"; }
}
回退的方法:
public string Text
{
get { return phoneNumber.Text; }
set { value = phoneNumber.Text; }
}
public string ComboBoxSelection
{
get { return callResultsSelection.SelectedItem.ToString(); }
set { value = callResultsSelection.SelectedItem.ToString(); }
}
我使用的控制迭代如下。這些部分還有很多,但這是唯一相關的部分。
foreach (object o in ccChildren.GetChildren(tool, 3))
{
if (o.GetType() == typeof(CallTemplate))
{
CallTemplate template = (CallTemplate)o;
if (template.Text != null)
{
textBuffer += template.Text;
}
else
{
textBuffer = "";
}
tempString += textBuffer;
textBuffer = "";
}
}
通過使用斷點,我知道,它確實達到在if
塊的決策點,但即使VS識別CallTemplate
對象,它不匹配。任何人都看到了問題?
編輯:我知道問題不在於迭代方法(ccChildren.GetChildren)。我使用這個與其他衆多控件(文本框,組合框,單選按鈕,複選框),它工作得很好。該領域唯一可能成爲問題的是CallTemplate
類型。
在屬性.Text @集{}你應該使用值,而不是分配它! – mrbm 2012-03-02 17:36:19
else { textBuffer =「」; } 似乎是錯的? – mrbm 2012-03-02 17:41:16
我把值切換到等號的另一邊,沒有效果。至於textBuffer =「」,迭代的控件是一系列標籤和文本框。在if塊之前,該標籤被添加到textBuffer中。但是,如果標籤引用的控件爲空,則標籤不需要添加到tempString中,因此沒有空行。 – 2012-03-02 17:49:04