윈도우의 Top 및 Left 속성에 대한 값을 바인딩하고 싶습니다. valueconverter 및 valueconverter 매개 변수를 사용해야합니다 (정확하게 말하면 : 내 창에 datacontext가 필요합니다). unfortunatelly 내 값 변환기가 발견되지 않았다는 오류가 발생합니다.창 속성에 값 변환기를 사용할 수 있습니까?
<Window x:Class="Proofing_Tool.wwwww"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Proofing_Tool"
xmlns:conv="clr-namespace:Proofing_Tool.ValueConverters"
mc:Ignorable="d"
Height="180"
MinHeight="50"
Width="340"
SizeToContent="Height"
AllowsTransparency="True"
WindowStyle="None"
Background="{x:Null}"
OpacityMask="White"
Name="AnomalyWindow"
Title="Anomaly Details"
ResizeMode="NoResize"
Left="{Binding ., Converter={StaticResource ValueConverterAnomalyToLeft},ConverterParameter={x:Reference Name=AnomalyWindow}}"
Top="{Binding ., Converter={StaticResource ValueConverterAnomalyToTop},ConverterParameter={x:Reference Name=AnomalyWindow}}">
<Window.Resources>
<conv:ValueConverterAnomalyToLeft x:Key="ValueConverterAnomalyToLeft" />
<conv:ValueConverterAnomalyToTop x:Key="ValueConverterAnomalyToTop" />
</Window.Resources>
편집, 부분 아래 값을 업데이트하는 문제는 잘 작동 : 뒤에
<TextBlock Grid.Column="1" Text="{Binding Ano.Name, Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"/>
코드 :
public Anomaly Ano
{
get { return _ano; }
set
{
_ano = value;
NotifyPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
한 번만 업데이트됩니다
리소스 선언을 App.xaml의 Application.Resources로 이동합니다. Window의 DataContext를 변환기에 전달하려면 MultiBinding 중 하나가 ' '인 MultiValueConverter와 함께 MultiBinding을 사용하십시오. –
Clemens
Unfortunatelly, App.xaml 안에 선언을 넣을 수 없으므로 WPF 컨트롤을 VSTO/Winforms 응용 프로그램에 호스팅하고 있습니다. – buks