标签: data-binding

将MVVM与CollectionViewSource一起使用

我正在尝试使用CollectionViewSource来显示一些数据,我看到的所有示例/教程都有一个自定义类,它们在另一个类中使用,它继承自ObservableCollection.我是使用CollectionViewSource的新手,这只是我的第三个MVVM实现,所以我可能会误解编程模式,但我的问题是:我在哪里放置ObservableCollection类和/或自定义类?

我觉得他们应该进入模型,但后来我不确定什么被绑定到View.我只是将它们构建为外部类,然后在Model/ViewModel中引用它们吗?

任何帮助表示赞赏

c# data-binding wpf mvvm collectionviewsource

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

VBNet错误:集合已被修改;枚举操作可能无法执行

这就是发生的事情:在我的应用程序的表单加载中,我创建了一个后台工作器来绑定控件上的集合(数据库中记录填充到数据集中的记录)。但是问题是当我更新数据库上的记录时,如果我再次运行此过程,则会引发错误。

    If xControl.InvokeRequired Then
        Dim MyDelegate As New InitializeDataBinding_Delegate(AddressOf InitializeDataBinding)
        Invoke(MyDelegate, New Object() {xControl, xQuery, xPrimaryKey}) ' ERROR HERE SAYING: Collection was modified; enumeration operation may not execute.
    Else
        Using ds As DataSet = New DataSet()
            Using dbAdapter As MySqlDataAdapter = New MySqlDataAdapter(xQuery, ConnectionClass.ConnectionString)
                dbAdapter.Fill(ds)
            End Using

            Dim dvm As DataViewManager = New DataViewManager(ds)
            Dim iDataList As DataView = dvm.CreateDataView(ds.Tables(0))
            For Each iBind As Binding In xControl.DataBindings
                xControl.DataBindings.Remove(iBind)
            Next
            xControl.DataBindings.Add("EditValue", iDataList, xPrimaryKey)
            xControl.Properties.DataSource = iDataList
            xControl.EditValue = Nothing …
Run Code Online (Sandbox Code Playgroud)

vb.net data-binding autocomplete backgroundworker

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

如何绑定布尔值以切换Button的Click事件

我有Button......

<Button Click="Button_Click" />
Run Code Online (Sandbox Code Playgroud)

我想CanClick以某种方式绑定一个布尔值.如果CanClickfalse,则Click事件不应该火...

如何才能做到这一点?

c# data-binding wpf xaml button

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

将DataSet绑定到Listbox

我想将SQL查询的结果绑定到WPF接口的Listbox.我看到很多例子,我无法调整我的应用程序,以便正常工作.我使用这个代码:

string sqlStr1 = "SELECT Players.LastName FROM Players";

SqlDataAdapter dAdapt1 = new SqlDataAdapter(sqlStr1, cnStr);
DataSet dataSet1 = new DataSet();
dAdapt1.Fill(dataSet1);

List1.DataContext = dataSet1;
Run Code Online (Sandbox Code Playgroud)

并在xaml页面中:

<ListBox Name="List1" Grid.Column="1" Grid.Row="2" ></ListBox>
Run Code Online (Sandbox Code Playgroud)

绑定它们的方式是什么,以便在列表框中显示名称?

如果不在xaml页面中添加任何Binding,它会在我尝试运行时抛出异常.怎么了?

c# data-binding wpf adapter

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

数据绑定转发器到List <T> - 找不到T的属性?

我有一个基本的中继器:

<asp:Repeater id="BlogDisplay" runat="server">
    <HeaderTemplate>
        <table>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td valign="top" align="left" style="font-weight:bold; padding-left:3px;">
                <%# DataBinder.Eval(Container.DataItem, "Title")%>
            </td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>

</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

当我执行代码时,我得到一个异常: DataBinding: 'DocumentWebParts.BlogPostLost.BlogItem' does not contain a property with the name 'Title'.

这让我心烦意乱

所以你可能认为我的BlogItem对象没有Title属性 - 但事实并非如此!

public class BlogItem
{
    public int Id;
    public string Body;
    public string Title;
    public string Author;
    public DateTime Published;
}
Run Code Online (Sandbox Code Playgroud)

并且该属性肯定正在设置 - 抛出一个断点显示所有值都已设置.

BlogItems = new List<BlogItem>();
SPListItem item;
foreach (SPListItem i in myItems)
            {
                //off-topic code hidden

                BlogItem …
Run Code Online (Sandbox Code Playgroud)

asp.net data-binding repeater

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

将类实例绑定到控件

我正在使用本教程学习WPF数据绑定.

这是我的XAML:

Window x:Class="DataBinding_01.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        
        Title="MainWindow" Height="350" Width="525">

    <Window.Resources>
        <local:Person x:Key="PersonDataSource" Name="Joe"/>
    </Window.Resources>

    <DockPanel Height="Auto" Name="panel" Width="Auto" LastChildFill="True">
        <TextBox DockPanel.Dock="Top" Height="23" Name="txtName" Width="Auto" />
        <Button Content="Button" Name="button1" Width="Auto" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Click="button1_Click" />
    </DockPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

 public partial class MainWindow : Window
    {
        Person myPerson = null;
        public MainWindow()
        {
            InitializeComponent();
            myPerson = this.Resources["PersonDataSource"] as Person;
            myPerson.NameProperty = "hi, again!";
        }    
    }

    public class Person 
    {

        Person()
        {
            NameProperty = "hi";
        }

        Person(String _name)
        {
            NameProperty = _name; …
Run Code Online (Sandbox Code Playgroud)

data-binding wpf

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

WPF。绑定到GridViewColumn中单元格的高度?

我有一个这样定义的GridView:

            <ListView x:Name="colorLegend" Background="Transparent" ItemsSource="{Binding /Colors}">
            <ListView.Resources>
                <Style x:Key="myHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
                    <Setter Property="Visibility" Value="Collapsed" />
                </Style>
            </ListView.Resources>
            <ListView.View>
                <GridView ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}">
                    <GridViewColumn Header="Image" Width="100">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <Border Background="{Binding Brush}" Height="20" Width="40" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=Name}" Width="auto" />
                </GridView>
            </ListView.View>
        </ListView>
Run Code Online (Sandbox Code Playgroud)

我希望第一个单元格内的边框高度与单元格列的高度一样高。我可以将边框的高度绑定到第二个单元格的高度吗?

我想要的是能够更改第二个单元格的字体大小和第一个单元格的边框以调整大小以匹配更改?

谢谢!

data-binding wpf gridview datagridviewcolumn

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

如何在viewmodel中处理listbox keydown事件以删除listItems?

我有一个列表框如何在页面的相应视图模型中处理keydown事件以删除listItems?我在视野中使用这种鳕鱼:

<ListBox Margin="2,25,2,2" Grid.Row="3" ItemsSource="{Binding Path=CardViewModelSearchResults}" SelectedItem="{Binding Path=SelectedCategoryViewModel, Mode=TwoWay}" IsSynchronizedWithCurrentItem="True">
            <ItemsControl.ItemTemplate>
                <DataTemplate >
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <TextBox Grid.Row="0" Grid.Column="0" ff:TextBoxBehaviour.TextChangedCommand="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl, AncestorLevel=1}, Path=DataContext.TextChanged}" Text="{Binding Path=CategoryName}" FontSize="14" FontWeight="Normal" BorderThickness="0" AllowDrop="False" />
                        <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Path=CategoryID}" FontSize="14" FontWeight="Normal" Visibility="Hidden" />
                    </Grid>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ListBox>
Run Code Online (Sandbox Code Playgroud)

data-binding wpf mvvm

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

Knockout JS:增加一个属性值

我有一个半全面的KO设置.但到目前为止,我只使用KO来呈现数据.

现在我需要增加/减少模型的值.

这是我的模型:

SharedItem: function (data) {
    var self = {};
    ...
    self.rating = ko.observable(data.Rating);
    ...
    return self;
}
Run Code Online (Sandbox Code Playgroud)

这是我的观点

ItemsViewModel: function (json) {
    var model = {};
    model.shareditems = ko.observableArray();

    var mappedSharedItems = [];
    var parsedData = $.parseJSON(json);

    $.each(parsedData, function (key, val) {
        var newSharedItems = new SharedItem(val);
        mappedSharedItems.push(newSharedItems);
    });

    //My function to vote
    model.voteUp = function(item) {
        item.rating += 1;
    }

    model.shareditems(mappedSharedItems);
    return model;
}
Run Code Online (Sandbox Code Playgroud)

并且我的视图像任何标准的Knockout绑定一样应用(响应是我传递给viewmodel的ajax响应):

var viewModel = ItemsViewModel(response);
ko.applyBindings(viewModel, $('#ItemListWrapper')[0]);
Run Code Online (Sandbox Code Playgroud)

我似乎无法弄清楚如何使我的voteUp功能增加评级号.

重要提示:该 …

javascript data-binding jquery knockout.js

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

WPF MVVM控件错误地共享ViewModel

我有一个控件:DailyHours.它有我创建的自定义TimeEdit控件的集合.每个控件都应绑定到DailyHours视图模型类.相反,它试图在TimeEdit控件中找到我绑定的值.

TimeEdit控件绑定的示例:

<bc:TimeEdit Time="{Binding CurrentOperatingHours.MondayClose}" ></bc:TimeEdit>
Run Code Online (Sandbox Code Playgroud)

TimeEdit控件有自己的小时和分钟内部值,它们绑定到小时和分钟属性.因此,TimeEdit控件的DataContext本身就是.

public TimeEdit()
{
  InitializeComponent();
  this.DataContext = this;
}
Run Code Online (Sandbox Code Playgroud)

但是,这会导致DailyHours控件错误地绑定时间值.它在TimeEdit控件中查找CurrentOperatingHours属性,而不是自己的视图模型.

如何让我的TimeEdit控件正确绑定内部值而不会干扰其父容器上的绑定?

data-binding wpf mvvm

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