2016-01-29 3 views
1

Я пытаюсь преобразовать некоторый код XAML в C#. Вот XAML:Как я могу связать ComboBox.TextBlock в C#

<ComboBox TextBlock.Foreground="{Binding DesiredForegroundBrush}"/> 

Я хотел бы сделать то же самое в C# код, но я в недоумении о том, как получить доступ к TextBlock.

Я попытался следующие:

ComboBoxInstance.TextBlock.SetBinding(TextBlock.ForegroundProperty, "DesiredForegroundBrush"); 

Но TextBlock не доступен в C# код.

Я также попытался добраться до ребенка в поле со списком, но GetChildrenCount возвращает 0:

var childrenCount = VisualTreeHelper.GetChildrenCount(ComboBoxInstance); 

Я сделал несколько веб-поиска, но все, что я нашел, было вопросов о том, как связать поля со списком для TextBoxes.

Я чувствую, что должен быть простой способ сделать это. Любая помощь будет оценена!

Update:

Я нашел этот пост:

How to I access an attached property in code behind?

Но это только показывает, как непосредственно присвоить свойство в код, в отличие от настройки привязки на нем.

+1

Вы можете попробовать 'comboBoxTest.SetBinding (TextBlock.ForegroundProperty, новое связывание (« DesiredForegroundBrush »));' Есть ли проблемы с этим? – bars222

ответ

2

использовать ComboBox.ForegroundProperty для привязки переднего плана. Зачем вам текстовое поле?

0

Каждый элемент управления, полученный из класса «Контроль», будет иметь свойство Foreground, которое является свойством зависимостей и может быть привязано к любому значению Brush. Чтобы изменить значение любого элемента управления, нам не нужно копать его.

<ComboBox Background="{Binding ForegroundColorBrush}"/> 

и цвет переднего плана combobox изменится в соответствии с привязкой.

Смежные вопросы