不确定这里做了什么,但绑定适用于数据模板中的标签,但不适用于工具提示.任何帮助将不胜感激.
<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) 我一定是做错了.
我正在使用VS2012,c#.我正在使用nuget来管理我的包.以前我总是自己创建一个"外部引用"目录和托管包.我现在决定采用新的包管理方式.
无论如何,nuget正在努力享受.我进行了设置,以便软件包不包含在svn(代码存储库)中,并且如果需要,可以下载丢失的软件包.所有工作都适用于我的团队中的所有开发人员以及我们的Team City框.
当我想调试其中一个包(即进入包源)时出现问题.我根据此链接设置了VS2012用于符号源下载.但是当我运行解决方案并想要进入包代码时,VS2012给了我一个空白的外观,并说无法找到符号.在Fiddler中,我可以看到一大堆404.
我期待从nuget引用的包的符号被下载,然后允许我介入并调试.或者我是否必须手动下载源并将Vs2012指向它 - 就像我以前在进行手动包管理时那样做?
我有道理吗?
我有一个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) 我刚刚将我们的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
与此连接文章类似.
尝试首先使用EF 4.1代码进行一些单元测试.我有我的实时数据库(SQL Server)和我的单元测试数据库(Sql CE).在使用EF,Sql CE 4.0和事务支持进行战斗(并且失败)后,我决定运行我的测试的最简单方法是:
我有[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任何指针
我很难过.给定一个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) 我正在尝试将字符串规范化,然后再进行解析.基本上删除逗号之前或之后的任何空格,如果两个或多个逗号只用空格分隔,则用一个逗号替换.
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)
任何帮助表示赞赏
我有一个无效的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语句的一部分来调用?
我使用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) 我们有一些请求过滤器,也使用验证功能.
[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然后进行验证.我已经看到了操作顺序但是没有说明验证的位置......至少我没有看到.
任何帮助,将不胜感激.