小编ozc*_*cho的帖子

WPF绑定到工具提示

不确定这里做了什么,但绑定适用于数据模板中的标签,但不适用于工具提示.任何帮助将不胜感激.

                    <DataTemplate DataType="Label">
                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
                        <StackPanel.ToolTip>
                            <ToolTip DataContext="{Binding Path=PlacementTarget,
       RelativeSource={x:Static RelativeSource.Self}}">
                                <TextBlock Text="{Binding Path=DataContext.Description}" />
                            </ToolTip>
                        </StackPanel.ToolTip>
                        <Image Source="{StaticResource ApplicationInfoS}" 
                               Margin="0 0 5 0" Stretch="None"
                               HorizontalAlignment="Left" />
                        <Label Style="{StaticResource lblTextContent}" 
                               Padding="5 0 0 0"
                               Content="{Binding Path=DataContext.Description, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}"/>
                    </StackPanel>
                </DataTemplate>
Run Code Online (Sandbox Code Playgroud)

BTW DataView是在Listview中使用的.绑定到列表视图的视图模型上存在"描述"属性.

我在VS2010的输出窗口中收到的消息是:

System.Windows.Data错误:39:BindingExpression路径错误:'object'''String'(HashCode = -466763399)'上找不到'Description'属性.BindingExpression:路径= DataContext.Description; DataItem ='StackPanel'(Name =''); target元素是'TextBlock'(Name =''); target属性是'Text'(类型'String')

UPDATE

我现在已经放弃了.暂时使用以下hack:

将标记添加到StackPanel并将"描述"绑定到它

    <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Tag="{Binding Path=DataContext.Description, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}">
Run Code Online (Sandbox Code Playgroud)

将工具提示绑定到标记.是的,黑客,但它的工作原理.

<StackPanel.ToolTip>
  <ToolTip DataContext="{Binding Path=PlacementTarget, RelativeSource={x:Static RelativeSource.Self}}">
    <TextBlock Text="{Binding Path=Tag}" />
  </ToolTip> …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml binding

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

使用nuget和Symbols服务器

我一定是做错了.

我正在使用VS2012,c#.我正在使用nuget来管理我的包.以前我总是自己创建一个"外部引用"目录和托管包.我现在决定采用新的包管理方式.

无论如何,nuget正在努力享受.我进行了设置,以便软件包不包含在svn(代码存储库)中,并且如果需要,可以下载丢失的软件包.所有工作都适用于我的团队中的所有开发人员以及我们的Team City框.

当我想调试其中一个包(即进入包源)时出现问题.我根据此链接设置了VS2012用于符号源下载.但是当我运行解决方案并想要进入包代码时,VS2012给了我一个空白的外观,并说无法找到符号.在Fiddler中,我可以看到一大堆404.

我期待从nuget引用的包的符号被下载,然后允许我介入并调试.或者我是否必须手动下载源并将Vs2012指向它 - 就像我以前在进行手动包管理时那样做?

我有道理吗?

c# debugging debug-symbols nuget visual-studio-2012

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

WPF ListView SelectedItem为null

我有一个Listview,其中有一个复选框作为列之一.如果我点击实际复选框的任何位置,ListView的SelectedItem将按预期设置为当前选定的行.另一方面,如果我单击复选框(不先单击该行),则SelectedItem为null或先前单击的行.

谁能帮我吗....

干杯

<ListView Width="auto" SelectionMode="Single" x:Name="listBox"  ItemsSource="{Binding MyData}" SelectedItem="{Binding Path=SelectedMyData}">
                        <ListView.View>
                            <GridView>
                                <GridViewColumn Header="Date" Width="120">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <ContentPresenter Style="{StaticResource DateTimeContent}" Content="{Binding MyDate}"/>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                                <GridViewColumn Header="Is Correct" Width="100">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <CheckBox IsThreeState="False" 
                                                      Checked="OnChkChecked"
                                                      Unchecked="OnChkChecked"
                                                      IsChecked="{Binding IsCorrect}"></CheckBox>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                            </GridView>
                        </ListView.View>
                    </ListView>




                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <CheckBox IsThreeState="False" 
                                                      Checked="OnChkChecked"
                                                      Unchecked="OnChkChecked"
                                                      IsChecked="{Binding IsCorrect}"></CheckBox>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                            </GridView>
                        </ListView.View>
                    </ListView>
Run Code Online (Sandbox Code Playgroud)

c# wpf checkbox listview selecteditem

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

WPF TextBox绑定与格式

我刚刚将我们的wpf应用程序从3.5sp1升级到4.0.

我们使用下面的代码将文本框绑定到底层视图模型.文本框是可编辑的.

    <TextBox HorizontalContentAlignment="Right"
Text="{Binding Path=Price,   StringFormat={0:#,##0;(#,##0)},  Mode=TwoWay,  ValidatesOnDataErrors=True,  UpdateSourceTrigger=PropertyChanged, ValidatesOnExceptions=True}"/>
Run Code Online (Sandbox Code Playgroud)

在3.5sp1中,格式化最初只会发生.因此,当文本框被加载并绑定到值4000时,格式化将其更改为4,000.如果用户编辑了此值,则不会进行格式化.

在4.0中,格式化随着值的变化而发生(即当用户输入新值时).虽然从理论上说这听起来不错,实际上它是一场灾难.光标到处都是.它无法使用.

现在,我们可以将UpdateSourceTrigger更改为"LostFocus",但这会在某些情况下引入未验证数据的新问题.

有没有办法恢复旧的3.5sp1行为?

更新1

使用Converter仍然会产生相同的行为:

public class DecimalConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value != null)
            return ((decimal)value).ToString("#,##0;(#,##0)");

        return string.Empty;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value;
    }
}
Run Code Online (Sandbox Code Playgroud)

和修改后的XAML:

<TextBox Text="{Binding Path=Price, Converter={StaticResource DecimalConverter}, Mode=TwoWay, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged, ValidatesOnExceptions=True}"/>
Run Code Online (Sandbox Code Playgroud)

更新2

与此连接文章类似.

wpf binding string-formatting

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

实体框架4.1"代码优先"在Database.Delete之后不再调用SetInitializer

尝试首先使用EF 4.1代码进行一些单元测试.我有我的实时数据库(SQL Server)和我的单元测试数据库(Sql CE).在使用EF,Sql CE 4.0和事务支持进行战斗(并且失败)后,我决定运行我的测试的最简单方法是:

  1. 创建Db
  2. 运行测试
  3. 删除Db
  4. 冲洗并重复

我有[Setup]和[TearDown]功能:

[SetUp]
public void Init()
{
    System.Data.Entity.Database.SetInitializer(new MyTestContextInitializer());
    _dbContext = ContainerFactory.Container.GetInstance<IContext>();
    _testConnection = _dbContext.ConnectionString;
}

[TearDown]
public void Cleanup()
{
    _dbContext.Dispose();
    System.Data.Entity.Database.Delete(_testConnection);
}
Run Code Online (Sandbox Code Playgroud)

问题是System.Data.Entity.Database.SetInitializer在第一次测试后没有调用MyTestContextInitializer.

因此第二次测试失败了:

System.Data.EntityException:基础提供程序在Open上失败.
----> System.Data.SqlServerCe.SqlCeException:找不到数据库文件.检查数据库的路径

TIA任何指针

nunit entity-framework sql-server-ce-4

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

XSL转换删除Xml元素

我很难过.给定一个xml文档:

    <Frag>
        <DirRef Id="BeemzDir">
            <Com Id="BEED24F05AB78FB588F61D4092654B6D" Guid="{A11AB356-2F45-4157-92EF-ED49F5BE0F70}">
                <FileName Id="fil1" KeyPath="yes" Source="My.Exe" />
            </Com>
            <Com Id="FFF24F05AB78FB588F61D4092654CCC" Guid="{A11AB356-2F45-4157-92EF-ED49F5BE0F70}">
                <FileName Id="fil2" KeyPath="yes" Source="My.Dll" />
            </Com> 
          </DirRef>
</Frag>
<Frag>
        <ComGroup Id="MyGroup">
            <CompRef Id="BEED24F05AB78FB588F61D4092654B6D" />
            <CompRef Id="FFF24F05AB78FB588F61D4092654CCC" />
        </ComGroup>  
</Frag> 
Run Code Online (Sandbox Code Playgroud)

我需要使用xslt来删除包含Source ="My.Exe"的元素.在这种情况下,删除元素"Com",其属性id = BEED24F05AB78FB588F61D4092654B6D.

我做到了.但我不能做的是删除"CompRef"元素,其中Id = BEED24F05AB78FB588F61D4092654B6D.

所以转换后我希望我的xml看起来像:

    <Frag>
        <DirRef Id="BeemzDir">
            <Com Id="FFF24F05AB78FB588F61D4092654CCC" Guid="{A11AB356-2F45-4157-92EF-ED49F5BE0F70}">
                <FileName Id="fil2" KeyPath="yes" Source="My.Dll" />
            </Com> 
          </DirRef>
</Frag>
<Frag>
        <ComGroup Id="MyGroup">
            <CompRef Id="FFF24F05AB78FB588F61D4092654CCC" />
        </ComGroup>  
</Frag> 
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

更新

这是一些删除"FileName"元素的xml.

  <xsl:template match="Com/FileName[contains(@Source,'My.Exe')='true']">
  </xsl:template>
Run Code Online (Sandbox Code Playgroud)

这导致:

<Frag>
    <DirRef Id="BeemzDir">
        <Com Id="BEED24F05AB78FB588F61D4092654B6D" Guid="{A11AB356-2F45-4157-92EF-ED49F5BE0F70}">

        </Com>
        <Com …
Run Code Online (Sandbox Code Playgroud)

xml xslt transformation

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

RegEx替换字符串

我正在尝试将字符串规范化,然后再进行解析.基本上删除逗号之前或之后的任何空格,如果两个或多个逗号只用空格分隔,则用一个逗号替换.

var r = new Regex(@"(\s*,+\s*)");
var query = r.Replace("my reg, is a   disaster    everytime , i,try ,it,       yep, ,disaster.", ",");
Run Code Online (Sandbox Code Playgroud)

输出应该是:

my reg,is a   disaster    everytime,i,try,it,yep,disaster.
Run Code Online (Sandbox Code Playgroud)

但它的:

my reg,is a   disaster    everytime,i,try,it,yep,,disaster.
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏

c# regex

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

Postgres调用void函数

我有一个无效的plsql函数:

CREATE OR REPLACE FUNCTION do_something(p_id BIGINT) 
RETURNS void
AS $$
BEGIN
   insert ....
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
Run Code Online (Sandbox Code Playgroud)

我想从另一个plsql函数中调用此函数,但是要在一个查询中进行如下操作:

SELECT  do_something(m.id) 
FROM    MyTable m
WHERE   m.IsActive;
Run Code Online (Sandbox Code Playgroud)

当我运行时,sproc我得到:

错误:查询没有结果数据的目的地提示:如果要舍弃SELECT的结果,请改用PERFORM。

是否可以将void函数作为select语句的一部分来调用?

postgresql plpgsql postgresql-9.2

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

保存实体会导致重复插入查找数据

我使用EF 4.1"代码优先"来创建我的数据库和对象.

鉴于:

public class Order 
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual OrderType OrderType { get; set; }
}

public class OrderType 
{
    public int Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

订单有一个ordertype.订单类型只是一个查找表.价值观不会改变.使用Fluent API:

//Order
ToTable("order");
HasKey(key => key.Id);
Property(item => item.Id).HasColumnName("order_id").HasColumnType("int");
Property(item => item.Name).HasColumnName("name").HasColumnType("string").HasMaxLength(10).IsRequired();

HasRequired(item => item.OrderType).WithMany().Map(x => x.MapKey("order_type_id")).WillCascadeOnDelete(false);

//OrderType
ToTable("order_type");
HasKey(key => key.Id);

Property(item => item.Id).HasColumnName("order_type_id").HasColumnType("int");
Property(item => item.Name).HasColumnName("name").HasColumnType("nvarchar").HasMaxLength(100).IsRequired(); 
Run Code Online (Sandbox Code Playgroud)

现在在我们的App中,我们加载所有查找数据并对其进行缓存.

var …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-4 ef-code-first entity-framework-4.1

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

Servicestack - 操作顺序流畅的验证和请求过滤器

我们有一些请求过滤器,也使用验证功能.

[AttributeUsage(AttributeTargets.Method, Inherited = true)]
public class MyFilterAttribute : Attribute, IHasRequestFilter
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

在AppHost中:

    public override void Configure(Container container)
    {
        ....
        Plugins.Add(new ValidationFeature());
        ....
    }
Run Code Online (Sandbox Code Playgroud)

我需要在请求过滤器之后运行流畅的验证,因为一些过滤器会将数据添加到dto然后进行验证.我已经看到了操作顺序但是没有说明验证的位置......至少我没有看到.

任何帮助,将不胜感激.

c# fluentvalidation servicestack

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