• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

是否可以使用值转换器窗口属性?

c/c++ 来源:buks 3次浏览

我想为窗口的Top和Left属性绑定值。我需要使用valueconverter和valueconverter参数(具体来说:我需要我的窗口的datacontext),不幸的是我得到错误,我的价值转换器尚未找到。是否可以使用值转换器窗口属性?

<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)); 
} 

,这只是一次更新:


===========解决方案如下:

…不幸的是我得到错误,我的价值转换器尚未找到。

这是因为资源被创建LeftTop属性设置。

您可以通过使用元素语法已创建的资源后,绑定到属性解决这个问题:

<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"> 
    <Window.Resources> 
     <conv:ValueConverterAnomalyToLeft x:Key="ValueConverterAnomalyToLeft" /> 
     <conv:ValueConverterAnomalyToTop x:Key="ValueConverterAnomalyToTop" /> 
    </Window.Resources> 
    <Window.Left> 
     <Binding Path="." Converter="{StaticResource ValueConverterAnomalyToLeft}" ConverterParameter="{x:Reference Name=AnomalyWindow}" /> 
    </Window.Left> 
    <Window.Top> 
     <Binding Path="." Converter="{StaticResource ValueConverterAnomalyToTop}" ConverterParameter="{x:Reference Name=AnomalyWindow}" /> 
    </Window.Top> 
</Window> 

的顺序问题。另一种选择是按照@Clements的建议在App.xaml中定义资源。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)