标签: datacontext

WPF DataContext与ItemsSource性能

假设我们有一个ItemsControl,它与一个源有关.两者之间是否有任何性能差异

ItemsControl.DataContext = resultSet;
Run Code Online (Sandbox Code Playgroud)

ItemsControl.ItemsSource = resultSet;
Run Code Online (Sandbox Code Playgroud)

(在两种情况下都在XAML中正确绑定)

wpf datacontext performance itemssource

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

Linq to sql使用不同的datacontexts以不同的方法添加/更新

我需要方法,Add()和Update(),它们都创建一个datacontext并返回创建/更新的对象.

在我的单元测试中,我先调用Add(),做一些东西,然后调用Update().问题是Update()失败并出现异常:

  System.Data.Linq.DuplicateKeyException: Cannot add an entity with a key that is already in use..
Run Code Online (Sandbox Code Playgroud)

我理解这个问题,但想知道该怎么办呢?我已经阅读了一些关于如何处理多个datacontext对象的内容,并且从我听到过这种方式是可以的.

我知道实体仍然附加到Add()中的datacontext但我需要找出如何解决这个问题?

提前致谢

c# datacontext linq-to-sql

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

在ASP.NET MVC视图中解决"Dispose之后访问的DataContext"错误

我有一个ASP.NET MVC 2动作,如下所示:

public ActionResult Index()
    {
        using(var db = new MyDataContext())
        {
            var welcomeSnippet = "test";
            var articles = db.Posts.Where(p => p.DateOfPublish <= DateTime.Now).Take(5).ToList();
            return View(new HomeViewModel()
            {
                Articles = articles,
                WelcomeSnippet = welcomeSnippet
            });
        }
    }
Run Code Online (Sandbox Code Playgroud)

该视图包含以下代码:

<%foreach (var item in Model.Articles)
{%>
     <div class="article" id="<%=item.PostID %>">
          <!-- some properties -->
          <div class="tags">tags: <i><%foreach (var tag in item.PostTags.ToList())
                                        { %><%=Html.Encode(tag.Tag.TagName.Trim())%> <%} %></i>
          </div>
     </div>
<% } %>
Run Code Online (Sandbox Code Playgroud)

我正在访问item.PostTags,这是通过我的DataContext获得的.在这里,我基本上使用延迟加载,但是我收到一个错误:我的DataContext已经在列出那些PostTag时被处理掉了.

在处理DataContext之前如何加载这些数据?

c# asp.net datacontext asp.net-mvc linq-to-sql

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

以类型安全的方式将DataContext共享给UserControl

我正在开发我的第一个Silverlight 4应用程序,并且正在努力如何以类型安全的方式将我的MainPage.xaml中的顶部元素(网格)上的DataContext集合共享到基础UserControl中.DataContext是我的ViewModel类的一个实例,我的想法是能够将UserControl中的某些元素绑定到ViewModel的属性.

我很确定ViewModel对象会冒泡到我的UserControl但是我怎么能在UserControl中确保DataContext的类型为PatternCreatorViewModel?

希望这是可以理解的!

silverlight datacontext user-controls

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

wpf按钮单击事件

在这个问题我问了一下添加TabItems动态到TabControlItemsSource来自ObservableCollection<Village>..我的问题是,如果添加一个按钮,任何TabItem,此按钮将有DataContext其容器的TabItem,我怎么能实现此按钮的Click事件?

wpf datacontext observablecollection

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

数据库服务器太忙了.打开DataContexts所需的建议

我昨天开始运行这个庞大的系统.成千上万的人同时连接..我正在使用SQL Server 2008和.NET 3.5(C#);

今天我注意到我的数据库服务器变得非常慢(顺便说一句,服务器机器确实能够轻松地处理10x这个应用程序,所以我必须弄乱我的连接或其他东西).

首先:My Business类分别创建了一个DataContext.在课堂上,像这样:

public class BusProduct : IDisposable
{
    //DataContext
    DBDataContext db = new DBDataContext();


    //Variable of type DAL.Products (that will be set on application level)
    public Products _attributes { get; set; }

    //Dispose
    public void Dispose()
    {
        Dispose(true);

        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (disposing)
        {
            db.Dispose();
        }
    }

    /// Constructor
    public BusProduct()
    {
        try
        {
            //New object
            _attributes = new Product();
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message,ex);
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c# database datacontext class-design sql-server-2008

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

从ChangeSet中删除Linq-to-SQL

我有一个ObservableCollection<Widget>NotifyCollectionChangedAction.Add执行context.Widget.InsertOnSubmit(addedWidget).

在我执行之前,我context.SubmitChanges()需要删除一个已添加的项目,因为它不再需要,但是仍然可能有一些项目context.GetChangeSet().Inserts仍然需要插入.

是否可以取消特定的插入/删除而不丢弃DataContext并重新开始?

c# linq datacontext linq-to-sql

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

后面的视图代码中的DataContext值

在MVVM模式中,可以接受甚至可以在后面的视图代码中访问ViewModel属性吗?

我有一个可观察的集合,它在ViewModel中填充.我需要在视图中使用它来绑定带有链表的无尽的自动收报机.即

    private LinkedList<Border> tickerForex = new LinkedList<Border>();

    public ForexBuy()
    {
        InitializeComponent();
        DataContext = new ForexViewModel();
    }

    private void InitializeForexTicker()
    {
        CanvasForexBuyTicker.Children.Clear();
        foreach (var currency in DataContext.Currencies) //Is this possible/allowable???
        {
           AddTickerItem(currency);
        }

        CanvasForexBuyTicker.Dispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(delegate
        { var node = tickerForex.First;

            while (node != null)
            {
                if (node.Previous != null)
                {
                    Canvas.SetLeft(node.Value, Canvas.GetLeft(node.Previous.Value) + node.Previous.Value.ActualWidth + gap);
                }
                else
                {
                    Canvas.SetLeft(node.Value, CanvasForexBuyTicker.Width + gap);
                }

                node = node.Next;
            }

            return null;

        }), null);

}

void AddTickerItem(Currency currency)
    {
        Border border …
Run Code Online (Sandbox Code Playgroud)

c# wpf datacontext viewmodel

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

从新创建的窗口访问主窗口datacontext

在我的MainWindow中,我创建了一个包含不同设置的类的新实例.设置类的参数后,我将datacontext =设置为该类.

public partial class MainWindow : Window
{

 private MeasConSettings mMeasConSettings = new MeasConSettings();

  public MainWindow()
  {
    InitializeComponent();
    DataContext = mMeasConSettings;
  }

  private void MenuComm_Click(object sender, RoutedEventArgs e)
  {// See code below}

}
Run Code Online (Sandbox Code Playgroud)

现在我还有一个打开一个新窗口的函数,这个窗口包含一个文本框,其文本应绑定到MainWindow的datacontext.

    private void MenuComm_Click(object sender, RoutedEventArgs e)
    {
        FrmSettings newWindow = new FrmSettings();
        newWindow.DataContext = mMeasConSettings;
        newWindow.TxtComm.Text = mMeasConSettings.CommSettings;
        newWindow.Show();
    }
Run Code Online (Sandbox Code Playgroud)

此代码使用正确的内容填充newWindow的文本框,但由于在更改文本框中的文本(新创建的窗口中的TxtComm)后datacontext未更新,因此它不会受到限制.

文本框的XAML代码示例:

<TextBox Grid.Row="1" Grid.Column="3" Margin="2,0"  Name="TxtComm" DataContext="{Binding Path=CommSettings, UpdateSourceTrigger=PropertyChanged}" />
Run Code Online (Sandbox Code Playgroud)

"CommSettings"是MeasConsettings类的成员

public class MeasConSettings
{
    private string mCommSettings;

    public string CommSettings
    {
        get
        { …
Run Code Online (Sandbox Code Playgroud)

c# wpf datacontext window

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

如何使用DataTemplate设置DataContext

我被告知在MVVM中为视图设置DataContext的最佳方法是使用DataTemplate.所以我试图通过使用DataTemplate将MainWindow的DataContext设置为MainWindowViewModel的实例.

我一直无法弄清楚如何.

我已经尝试将ResourceDictionary放在不同的地方(在App.xaml中,在Window.Resources标签中......)

我用谷歌搜索无济于事.这就是我所拥有的......(它不起作用,但在这里它是)

App.xaml中:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Dictionary1.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

Dictionary1.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:local="clr-namespace:DataTemplateTesting" >

    <DataTemplate DataType="{x:Type local:MainViewModel}">
        <local:MainWindow/>
    </DataTemplate>

</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

MainViewModel.cs

namespace DataTemplateTesting
{
    public class MainViewModel
    {
        public MainViewModel() { }
    }
}
Run Code Online (Sandbox Code Playgroud)

我做的唯一另一件事是为MainWindow添加一个处理程序,用于DataContextChanged事件,所以我可以看到它是否曾被激活......它没有.

任何想法如何解决这一问题??

编辑:这里没有任何东西无法生成,但是......这里是MainWindow代码.

MainWindow.xaml

<Window x:Class="DataTemplateTesting.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:DataTemplateTesting"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525"
        DataContextChanged="Window_DataContextChanged"        >
    <Grid>

    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

MainWindow.xaml.cs

namespace DataTemplateTesting
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    { …
Run Code Online (Sandbox Code Playgroud)

data-binding wpf datacontext datatemplate

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