相关疑难解决方法(0)

ElementName绑定失败

我有以下XAML:

<Grid>
    <Grid.RowDefinitions>
        ...
    </Grid.RowDefinitions>
    <DataGrid Grid.Row="0" ...>
        <DataGrid.Columns>
            ...
        </DataGrid.Columns>
    </DataGrid>

    <DockPanel Grid.Row="2">
        <CheckBox x:Name="DisplayMarkers" DockPanel.Dock="Top" Content="Display Data Points?"
                Margin="8,5,0,5" d:LayoutOverrides="Height" HorizontalAlignment="Left" IsChecked="False" />
        <vf:Chart DockPanel.Dock="Top" ScrollingEnabled="False" ZoomingEnabled="True" ToolBarEnabled="True">
            <vf:DataSeries AxisYType="Secondary" RenderAs="Line" DataSource="{Binding CdTeRoughnessList}"
                    XValueType="DateTime"
                    MarkerEnabled="{Binding ElementName=DisplayMarkers, Path=IsChecked}" Color="Navy"
                    LegendText="Roughness Std. Dev.">
Run Code Online (Sandbox Code Playgroud)

此绑定失败: MarkerEnabled="{Binding ElementName=DisplayMarkers, Path=IsChecked}"

我正在尝试绑定到我的Checkbox上名为'DisplayMarkers'的IsChecked属性.当我运行它时,在VS 2010的调试模式下,输出窗口显示绑定失败.它找不到名为'Checkbox'的元素谁能告诉我为什么?

我从VS得到的错误是:

System.Windows.Data Error: 4 : Cannot find source for binding with reference 

    'ElementName=DisplayMarkers'. BindingExpression:Path=IsChecked; DataItem=null; target element is 'DataSeries' (Name=''); target property is 'MarkerEnabled' (type 'Nullable`1')
Run Code Online (Sandbox Code Playgroud)

data-binding wpf xaml

37
推荐指数
2
解决办法
2万
查看次数

无法找到引用'RelativeSource FindAncestor'的绑定源

我收到此错误:

Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.UserControl', AncestorLevel='1''
Run Code Online (Sandbox Code Playgroud)

在这个绑定:

 <DataGridTemplateColumn Visibility="{Binding DataContext.IsVisible, RelativeSource={RelativeSource AncestorType={x:Type UserControl}},Converter={StaticResource BooleanToVisibilityConverter}}">
Run Code Online (Sandbox Code Playgroud)

ViewModel作为DataContext在UserControl中.DataGrid的DataContext(坐在UserControl中)是ViewModel中的属性,在ViewModel中我有一个变量,表示是否显示某一行,其绑定失败,为什么?

我的财产:

    private bool _isVisible=false;

    public bool IsVisible
    {
        get { return _isVisible; }
        set
        {
            _isVisible= value;
            NotifyPropertyChanged("IsVisible");
        }
    }
Run Code Online (Sandbox Code Playgroud)

当涉及到函数时:NotifyPropertyChanged PropertyChanged事件为null - 意味着他未能注册绑定.

应该注意的是,我有更多绑定到ViewModel的方式,这是一个例子:

Command="{Binding DataContext.Cmd, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" 
Run Code Online (Sandbox Code Playgroud)

wpf binding mvvm

35
推荐指数
1
解决办法
3万
查看次数

如何绑定DataGridColumn.Visibility?

我有类似以下帖子的问题:

Silverlight DataGridTextColumn绑定可见性

我需要根据ViewModel中的值对Silverlight DataGrid中的列进行可见/折叠.为此,我尝试将Visibility属性绑定到ViewModel.但是我很快发现Visibility属性不是DependencyProperty,因此无法绑定.

为了解决这个问题,我尝试将自己的DataGridTextColumn子类化.有了这个新的类,我创建了一个DependencyProperty,最终推动更改DataGridTextColumn.Visibility财产.如果我没有数据绑定,这很有效.在我数据绑定到新属性的那一刻,它失败了,带有AG_E_PARSER_BAD_PROPERTY_VALUE异常.

public class MyDataGridTextColumn : DataGridTextColumn
{
    #region public Visibility MyVisibility

    public static readonly DependencyProperty MyVisibilityProperty =
        DependencyProperty.Register("MyVisibility", typeof(Visibility), typeof(MyDataGridTextColumn), new PropertyMetadata(Visibility.Visible, OnMyVisibilityPropertyChanged));

    private static void OnMyVisibilityPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var @this = d as MyDataGridTextColumn;

        if (@this != null)
        {
            @this.OnMyVisibilityChanged((Visibility)e.OldValue, (Visibility)e.NewValue);
        }
    }

    private void OnMyVisibilityChanged(Visibility oldValue, Visibility newValue)
    {
        Visibility = newValue;
    }

    public Visibility MyVisibility
    {
        get { return (Visibility)GetValue(MyVisibilityProperty); }
        set { SetValue(MyVisibilityProperty, value); }
    }

    #endregion public Visibility …
Run Code Online (Sandbox Code Playgroud)

silverlight binding datagrid visibility

15
推荐指数
2
解决办法
2万
查看次数

XAML ListView:标头绑定不起作用

我不能让{Binding Title}inHeaderTemplate出现。

这是连接到 BindingContext 的类:

class SensorGroup
{
    public string Title { get; set; }
    public IList<Sensor> Sensors { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

XAML:

<ListView  Header=""
           ItemsSource="{Binding Sensors}">

  <ListView.HeaderTemplate>
    <DataTemplate>
      <Grid>
        <Label Text="{Binding Title}"/>
      </Grid>
    </DataTemplate>
  </ListView.HeaderTemplate>

  <ListView.ItemTemplate>
  ...
</ListView>
Run Code Online (Sandbox Code Playgroud)

如果我用 替换它<Label Text="Some static text"/>,文本就会出现。

我找到了这个相关的问题,它链接到另一个问题。但我无法让它发挥作用。我试过:

<ContentPage.Resources>
    <Label x:Key="MyTitle"
            Binding="{Title}"/>
</ContentPage.Resources>

...

<Grid>
    <StaticResource ResourceKey="MyTitle"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误,说Title无法找到绑定。

c# xaml xamarin

3
推荐指数
1
解决办法
3571
查看次数

Tag属性中的WPF数据绑定错误

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:son"
         x:Class="son.SonWindow">
    <Grid x:Name="myGrid">
        <Grid.Tag>
            <Label Content="{Binding ActualWidth, ElementName=myGrid}" />
        </Grid.Tag>
    </Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

就像上面的一个简单代码一样,但是绑定找不到Element myGrid.在运行时,错误显示在"输出"窗口中

"System.Windows.Data错误:4:无法找到与引用'ElementName = myGrid'绑定的源.BindingExpression:Path = ActualWidth; DataItem = null;目标元素是'Label'(Name =''); target属性是'内容'(类型'对象')"

我正在使用Visual Studio 2015社区版与.Net Framework 4.5.2.有任何想法吗?先感谢您.

c# data-binding wpf

1
推荐指数
1
解决办法
2039
查看次数

标签 统计

wpf ×3

binding ×2

c# ×2

data-binding ×2

xaml ×2

datagrid ×1

mvvm ×1

silverlight ×1

visibility ×1

xamarin ×1