Я хочу использовать два значения свойства, чтобы определить, включен ли элемент или нет.
До сих пор следующая строка решала включить/отключить элемент. IsEnabled
решается на основании
привязка к someContext.SomeObject.Count
<ToggleButton Style = "{StaticResource CheckButtonStyle}" Margin = "1"
IsChecked = "{Binding Path=someContext[3], ElementName=MyElementName, IsAsync=True}"
IsEnabled = "{Binding Path=someContext.SomeObject.Count, ElementName=MyElementName, Converter = {StaticResource MyConverter}, ConverterParameter=3}" />
Я изменил конвертер на IMultiValueConverter и Я изменил XAML на следующее:
<ToggleButton Style = "{StaticResource CheckButtonStyle}" Margin = "1"
IsChecked = "{Binding Path=someContext[3],
ElementName=MyElementName, IsAsync=True}">
<ToggleButton.IsEnabled>
<MultiBinding Converter = "{StaticResource MyMultiValueConverter}" ConverterParameter = "3">
<Binding Path = "{someContext.SomeObject.Count}"/>
<Binding Path = "{IsConditionFullfilled}/>
</MultiBinding>
</ToggleButton.IsEnabled>
</ToggleButton>
Однако в первой версии распознается привязка внутри фигурных скобок, но во второй версии я получаю:
«Тип 'someContext' не найден. Убедитесь, что вы не пропустили ссылка на сборку и что все сборки, на которые ссылаются, были построены».
Я думаю, что <ToggleButton.IsEnabled></ToggleButton.IsEnabled>
каким-то образом не имеет доступа к тому же пространству имен, что и его родитель <ToggleButton />
Как я могу решить эту проблему?
Удалите фигурные скобки вокруг имен, иначе они будут интерпретироваться как расширения разметки.
При использовании для предоставления значения атрибута синтаксис, который отличает последовательность расширения разметки от процессора XAML, — это наличие открывающей и закрывающей фигурных скобок ({ и }). Затем тип расширения разметки идентифицируется токеном строки, следующим сразу за открывающей фигурной скобкой.
Кроме того, добавьте ElementName
из оригинальной привязки, если она все еще нужна.
<MultiBinding Converter = "{StaticResource MyMultiValueConverter}" ConverterParameter = "3">
<Binding Path = "someContext.SomeObject.Count" ElementName = "MyElementName"/>
<Binding Path = "IsConditionFullfilled"/>
</MultiBinding>
Удалите фигурные скобки вокруг имени, например:
<Binding Path = "someContext.SomeObject.Count"/>
.