とComboBox
からなるかなり単純なUserControl
を作成しました。カスタムコントロール内の複数のコントロールのテキストと.Contentにアクセス
<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 @ set {}は値を使用する必要があります。 – mrbm
else { textBuffer = ""; } が間違っているようですか? – mrbm
私は等号の反対側に値を入れました。効果はありません。 textBuffer = ""の場合、反復処理を行うコントロールは一連のラベルとテキストボックスです。ifブロックの前に、ラベルがtextBufferに追加されます。しかし、ラベルが参照するコントロールが空の場合、空白行がないように、ラベルをtempStringに追加する必要はありません。 –