小编Dan*_*n J的帖子

什么是多语言数据库设计的最佳实践?

创建多语言数据库的最佳方法是什么?为每个表创建本地化表使设计和查询变得复杂,在其他情况下为每种语言添加列很简单但不动态,请帮助我理解什么是企业应用程序的最佳选择

sql database database-design

183
推荐指数
4
解决办法
11万
查看次数

如何在代码后面访问附加属性?

我的XAML中有一个矩形,并希望Canvas.Left在后面的代码中更改其属性:

<UserControl x:Class="Second90.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300" KeyDown="txt_KeyDown">
    <Canvas>
        <Rectangle 
            Name="theObject" 
            Canvas.Top="20" 
            Canvas.Left="20" 
            Width="10" 
            Height="10" 
            Fill="Gray"/>
    </Canvas>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

private void txt_KeyDown(object sender, KeyEventArgs e)
{
    theObject.Canvas.Left = 50;
}
Run Code Online (Sandbox Code Playgroud)

有谁知道这样做的语法是什么?

c# wpf code-behind attached-properties

94
推荐指数
3
解决办法
5万
查看次数

IUnityContainer.Resolve <T>抛出错误声称它不能与类型参数一起使用

昨天我已经实现了代码:

CustomerProductManager productsManager = container.Resolve<CustomerProductManager>();
Run Code Online (Sandbox Code Playgroud)

它是可编辑和工作的.

今天(可能是我修改了一些东西)我经常收到错误:

非泛型方法'Microsoft.Practices.Unity.IUnityContainer.Resolve(System.Type,string,params Microsoft.Practices.Unity.ResolverOverride [])'不能与类型参数一起使用

我的同事有相同的源代码,没有相同的错误.为什么?如何解决问题?

PS

行"使用Microsoft.Practices.Unity;" 存在于使用部分.

我试图用非泛型版替换泛型版:

CustomerProductManager productsManager = (CustomerProductManager)container.Resolve(typeof(CustomerProductManager));
Run Code Online (Sandbox Code Playgroud)

并得到另一个错误:

方法'Resolve'没有重载需要'1'参数

It seems like one of the assemblies is not referenced.. but which one? I have 2 of them referenced: 1. Microsoft.Practices.Unity.dll 2. Microsoft.Practices.ServiceLocation.dll

P.P.S. I've saw similar problem http://unity.codeplex.com/WorkItem/View.aspx?WorkItemId=8205 but it is resolved as "not a bug"

Any thought will be helpful

.net c# generics compilation unity-container

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

了解T-SQL中的PIVOT函数

我是SQL新手.

我有这样一张桌子:

ID | TeamID | UserID | ElementID | PhaseID | Effort
-----------------------------------------------------
1  |   1    |  1      |   3       |  5     |   6.74
2  |   1    |  1      |   3       |  6     |   8.25
3  |   1    |  1      |   4       |  1     |   2.23
4  |   1    |  1      |   4       |  5     |   6.8
5  |   1    |  1      |   4       |  6     |   1.5
Run Code Online (Sandbox Code Playgroud)

我被告知要获得这样的数据

ElementID | PhaseID1 | PhaseID5 | PhaseID6
--------------------------------------------
    3     | …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server pivot sql-server-2008

68
推荐指数
4
解决办法
17万
查看次数

Lambda表达式是否在C#闭包中?

lambda表达式(以及程度,匿名函数)是否闭包?

我对闭包的理解是它们是被视为对象的函数,这似乎是匿名函数和Lambda表达式所做的准确表示.

称他们为封闭是否正确?我知道由于lisp方言,闭包产生(或变得流行),但它是否也是一般编程术语?

感谢您提供的任何澄清!

c# lambda

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

如何在其锚元素移动时移动WPF Popup?

我有一个像这样定义的Popup:

<Popup
    Name="myPopup"
    StaysOpen="True"
    Placement="Bottom"
    PlacementRectangle="0,20,0,20"
    PlacementTarget="{Binding ElementName=myPopupAnchor}">
    <TextBlock ... />
</Popup>
Run Code Online (Sandbox Code Playgroud)

我已经myPopupAnchor为事件MouseEnter和元素添加了事件处理程序MouseLeave.两个事件处理程序切换弹出窗口的可见性.

我的问题是myPopupAnchor的位置只在首次显示弹出窗口时被读取,或者被隐藏然后再次显示.如果锚移动,则弹出窗口不会移动.

我正在寻找解决这个问题的方法,我想要一个动人的Popup.我可以通知WPF PlacementTarget绑定已更改并应再次读取吗?我可以手动设置弹出窗口的位置吗?

目前,我有一个非常粗略的解决方法,涉及关闭然后再次打开弹出窗口,这会导致一些重新绘制问题.

wpf binding popup

45
推荐指数
5
解决办法
5万
查看次数

DataGrid获取选定行的列值

我正在尝试获取DataGrid中所选行的每列的值.这就是我所拥有的:

private void dataGrid1_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
    DataGrid dg = sender as DataGrid;
    Console.WriteLine(dg.SelectedCells[0].ToString());
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.如果我这样做,SelectedCells.Count那么我得到正确的列数,但我似乎无法实际获得所选行中这些列的值.我已经尝试了一段时间没有运气!这是我的XAML:

<Grid>
    <DataGrid CanUserAddRows="True" AutoGenerateColumns="False" Height="200" HorizontalAlignment="Stretch" Margin="12,12,79,0" Name="dataGrid1" VerticalAlignment="Top" Width="389" DataContext="{Binding}" CanUserResizeColumns="False" CanUserResizeRows="False" HorizontalContentAlignment="Stretch" PreviewMouseDoubleClick="dataGrid1_PreviewMouseDoubleClick" CellEditEnding="dataGrid1_CellEditEnding">
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding  Path=UserID}"
                                Header="User ID" Width="SizeToHeader" />
            <DataGridTextColumn Binding="{Binding  Path=UserName}"
                                Header="User ID" Width="SizeToHeader" />
        </DataGrid.Columns>
    </DataGrid>
</Grid>
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想通过做类似的事情来访问数据,rowData.UserID但我似乎无法解决这个问题.有很多教程和使用DataGridView的帮助,但我没有使用它.

.net c# wpf datagrid

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

模型更改时刷新ViewModel的所有属性的数据绑定的好方法

精简版

如果我更新了我的ViewModel包装的Model对象,那么触发我的ViewModel公开的所有模型属性的属性更改通知的方法是什么?

详细版本

我正在开发遵循MVVM模式的WPF客户端,并且我正在尝试处理从服务到我的视图中显示的数据的传入更新.当客户端收到更新时,更新以DTO的形式出现,我将其用作模型.

如果此模型是对View中显示的现有模型的更新,我希望关联的ViewModel更新其数据绑定属性,以便View反映更改.

让我举一个例子来说明.考虑我的模型:

class FooModel
{
  public int FooModelProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

包含在ViewModel中:

class FooViewModel
{
  private FooModel _model;

  public FooModel Model 
  { 
    get { return _model; }
    set 
    { 
      _model = value; 
      OnPropertyChanged("Model"); 
    }
  }

  public int FooViewModelProperty
  {
    get { return Model.FooModelProperty; }
    set 
    {
      Model.FooModelProperty = value;
      OnPropertyChanged("FooViewModelProperty");
    }    
}
Run Code Online (Sandbox Code Playgroud)

问题:

当更新的模型到达时,我设置了ViewModel的Model属性,如下所示:

instanceOfFooVM.Model = newModel;
Run Code Online (Sandbox Code Playgroud)

这会导致OnPropertyChanged("Model")触发,但不是OnPropertyChanged("FooViewModelProperty"),除非我明确地从后者Model设置后者.因此FooViewModelProperty,当我更改模型时,绑定的视图将不会更新以显示该属性的新值.

明确地调用OnPropertyChanged每个公开的Model属性显然不是一个理想的解决方案,也没有采用newModel并迭代其属性来逐个更新ViewModel的属性. …

data-binding wpf mvvm inotifypropertychanged

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

TimeZoneInfo.ConvertTimeToUtc问题

我们遇到一个问题,一个开发人员创建下面的代码,它可以在他的DEV环境中工作.但是当它被检入QA时,代码会出现以下错误消息:

myRecord.UTCStartTime = TimeZoneInfo.ConvertTimeToUtc(myRecord.StartTime, myTimeZone);
Run Code Online (Sandbox Code Playgroud)

转换无法完成,因为提供的DateTime没有正确设置Kind属性.例如,当Kind属性为DateTimeKind.Local时,源时区必须为TimeZoneInfo.Local.

在我的DEV环境中,上面的代码生成与QA服务器相同的错误.我应用以下更改来解决问题:

DateTime utcStart = DateTime.SpecifyKind(myRecord.StartTime, DateTimeKind.Unspecified);
myRecord.UTCStartTime = TimeZoneInfo.ConvertTimeToUtc(utcStart, myTimeZone);
Run Code Online (Sandbox Code Playgroud)

为什么第一个代码示例在DEV1的环境中起作用,但在我的DEV环境和QA服务器上中断?

.net c# datetime

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

是否有一个很好的工具可以在运行时调试XAML的数据绑定行为/错误?

WPF是一个很棒的工具集,XAML数据绑定功能非常强大,但我经常因其透明性而遇到困难:在没有抛出错误时调试数据绑定失败很困难.

例如,我最近不得不改变这样的Style声明:

<DataGrid.RowStyle>
    <Style>
        <Style.Triggers>
            <DataTrigger Binding="{Binding TestProperty}" Value="False">
                <Setter Property="DataGridRow.Background" Value="Red"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</DataGrid.RowStyle>
Run Code Online (Sandbox Code Playgroud)

进入:

<DataGrid.RowStyle>
    <Style>
        <Style.Triggers>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.TestProperty}" Value="False">
                <Setter Property="DataGridRow.Background" Value="Red"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</DataGrid.RowStyle>
Run Code Online (Sandbox Code Playgroud)

为了使DataGridRow属性受到影响.在设计或运行时,看到绑定到不同源和RelativeSources 的含义是非常有帮助的.

是否存在任何此类工具/技术?

.net wpf xaml

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