gpt4 book ai didi

c# - BindingExpression 路径错误 : property not found

转载 作者:太空宇宙 更新时间:2023-11-03 23:22:53 25 4
gpt4 key购买 nike

BusyIndi​​cator.xaml

<UserControl x:Class="Eigen.Modules.Modelling.Components.BusyIndicator"
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:Eigen.Modules.Modelling.Components"
xmlns:telerikControls="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls"
xmlns:gif="http://wpfanimatedgif.codeplex.com"
mc:Ignorable="d"
d:DesignHeight="150" d:DesignWidth="150"
DataContext="{Binding RelativeSource={RelativeSource Self}}">

<Grid Width="{Binding Width}" Height="{Binding Height}">
<telerikControls:RadBusyIndicator IsIndeterminate="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Path=IsIndeterminate}">
<Border BorderBrush="White" Background="#A9FFFFFF" BorderThickness="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>

<Border Padding="5,0" Grid.Row="0">
<Image gif:ImageBehavior.AnimatedSource="/`enter code here`Resources/matriksenerji.gif" gif:ImageBehavior.AutoStart="True"/>
</Border>

<Border Padding="5" Grid.Row="1">
<TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Path=Label}" FontWeight="SemiBold" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
</Border>
</Grid>
</Border>
</telerikControls:RadBusyIndicator>
</Grid>
</UserControl>

BusyIndi​​cator.xaml.cs

public partial class BusyIndicator : UserControl
{
public BusyIndicator()
{
InitializeComponent();
}



public string Label
{
get { return (string)GetValue(LabelProperty); }
set { SetValue(LabelProperty, value); }
}

// Using a DependencyProperty as the backing store for Label. This enables animation, styling, binding, etc...
public static readonly DependencyProperty LabelProperty =
DependencyProperty.Register("Label", typeof(string), typeof(MatriksBusyIndicator), new PropertyMetadata(string.Empty));



public bool IsIndeterminate
{
get { return (bool)GetValue(IsIndeterminateProperty); }
set { SetValue(IsIndeterminateProperty, value); }
}

// Using a DependencyProperty as the backing store for IsProgress. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsIndeterminateProperty =
DependencyProperty.Register("IsIndeterminate", typeof(bool), typeof(MatriksBusyIndicator), new PropertyMetadata(true));

}

在 Page.xaml 中使用

...

<!--BusyIndicator-->
<components:BusyIndicator IsIndeterminate="True"
Visibility="{Binding IsProgress, Converter={StaticResource BoolToVisConverter}}"
Label="{lex:Loc CalculatingProgress}"
Grid.Column="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Width="150" Height="150"/>

...

错误信息;

System.Windows.Data Error: 40 : BindingExpression path error: 'IsProgress' property not found on 'object' ''BusyIndicator' (Name='')'. BindingExpression:Path=DataContext.IsProgress; DataItem='BusyIndicator' (Name=''); target element is 'BusyIndicator' (Name=''); target property is 'Visibility' (type 'Visibility')

ViewModel 类具有“IsProgress”属性但无法绑定(bind)到用户控件。

最佳答案

在 UserControl 定义中,您有以下行:

DataContext="{Binding RelativeSource={RelativeSource Self}}"

这意味着该控件的 DataContext 就是该控件本身。所以 WPF 试图在此控件中找到 IsProgress 属性。据我了解,IsProgress 属性是在页面的 ViewModel 中定义的。

所以修复它的最佳选择就是删除上面的行。

此外,要修复控件中的宽度和高度绑定(bind),请向它们添加 RelativeSource={RelativeSource AncestorType={x:Type UserControl}}

关于c# - BindingExpression 路径错误 : property not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34762258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com