如何将TabItem.Header设置为从少数字段获取的绑定,每个绑定以不同的大小显示,全部代替原始标题文本; 没有覆盖标题的默认样式和行为 - 我只需要文本.
我试图设置它的模板但是它创建了一个包含内部控件的矩形,这个矩形对用户点击没有响应,并且还有控件样式,我希望这个控件不可见,只有它的文本应该是可见的.
我尝试过以下方法:
<TabControl ItemsSource="{Binding}">
<TabControl.ItemTemplate>
<DataTemplate>
<TabItem>
<TabItem.Header>
<MultiBinding StringFormat="{}{0}-{1}">
<Binding Path="Title"/>
<Binding Path="Category.Title"/>
</MultiBinding>
</TabItem.Header>
<TabItem.Content>
<TextBlock>
Here is what is gonna be in the TabItem - not header
</TextBlock>
</TabItem.Content>
</TabItem>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
Run Code Online (Sandbox Code Playgroud)
但它没有显示任何东西.
我也尝试将HeaderTemplate设置为DataTemplate,但是会发生的是,DataTemplate会覆盖TabItem样式,当我单击文本时它不会转到单击的选项卡,此外,未选中的选项卡看起来很有趣,我看到了文本的矩形浮动,而我希望它是透明的.
因此,总结一下我的问题,我想将TabItem.Header.Text设置为带有StringFormat的MultiBinding.
我想为DateTime类型编写自己的模型绑定器.首先,我想写一个我可以附加到我的模型属性的新属性,如:
[DateTimeFormat("d.M.yyyy")]
public DateTime Birth { get; set,}
Run Code Online (Sandbox Code Playgroud)
这是简单的部分.但是粘合剂部分有点困难.我想为类型添加一个新的模型绑定器DateTime.我也可以
IModelBinder接口并编写我自己的BindModel()方法DefaultModelBinder和覆盖BindModel()方法我的模型有如上所示的属性(Birth).因此,当模型尝试将请求数据绑定到此属性时,BindModel(controllerContext, bindingContext)将调用我的模型绑定器.一切都好,但是.如何从controller/bindingContext获取属性属性,以正确解析我的日期?我怎样才能到达PropertyDesciptor房产Birth?
由于关注点的分离,我的模型类是在一个没有(也不应该)引用System.Web.MVC程序集的程序集中定义的.设置自定义绑定(类似于Scott Hanselman的示例)属性是禁止的.
在我的View中,我在ViewModel中得到了一个绑定到CollectionView的ListView,例如:
<ListView ItemsSource="{Binding MyCollection}" IsSynchronizedWithCurrentItem="true">
<ListView.View>
<GridView>
<GridViewColumn Header="Title" DisplayMemberBinding="{Binding Path=Title}"/>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Path=Name}"/>
<GridViewColumn Header="Phone" DisplayMemberBinding="{Binding Path=Phone}"/>
<GridViewColumn Header="E-mail" DisplayMemberBinding="{Binding Path=EMail}"/>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
现在这些GridViewColumns是固定的,但我希望能够从ViewModel更改它们.我猜我必须将GridViewColumn集合绑定到ViewModel中的某些东西,但是什么,以及如何?
ViewModel对WPF一无所知,所以我不知道如何在MVVM中实现这一点.
这有什么帮助吗?
在.NET 4.0中,Run.Text是可绑定的.所以我试着绑定它:
<Run Text="{Binding DisplayText}"/>
Run Code Online (Sandbox Code Playgroud)
但是当我运行时,我收到一个错误:"TwoWay或OneWayToSource绑定无法在'SomeNamespace.SomeClass'类型的只读属性'DisplayText'上工作."
我的DisplayText属性确实是只读的,但运行 - 运行也是如此,你无法编辑的TextBlocks.那么为什么我会收到这个错误?我用dotPeek挖掘了PresentationFramework,果然:
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text", typeof (string), typeof (Run),
(PropertyMetadata) new FrameworkPropertyMetadata((object) string.Empty,
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
new PropertyChangedCallback(Run.OnTextPropertyChanged),
new CoerceValueCallback(Run.CoerceText)));
Run Code Online (Sandbox Code Playgroud)
第四行,简称为day,指定Run.Text默认情况下应绑定双向,这没有任何意义,似乎是一个明显的设计错误.
当然,这很容易解决:
<Run Text="{Binding DisplayText, Mode=OneWay}"/>
Run Code Online (Sandbox Code Playgroud)
但我为什么要必须解决它?为什么默认情况下Run绑定双向?
如何将Go程序与C库连接起来?
我一直在浏览Go的源代码,但我仍然没有想到它.如果某人已经这样做了,你能分享吗?
更新:感谢@fserb,我发布了Go源代码中的一些文档:
Cgo支持创建调用C代码的Go包.
用法:cgo [编译器选项] file.go
在调用gcc以编译包的C部分时,编译器选项通过uninterpreted传递.
输入file.go是一个语法上有效的Go源文件,它导入伪包"C",然后引用诸如C.size_t之类的类型,诸如C.stdout之类的变量或诸如C.putchar之类的函数.
如果导入"C"后面紧跟注释,则在编译包的C部分时,该注释将用作标题.例如:
Run Code Online (Sandbox Code Playgroud)// #include <stdio.h> // #include <errno.h> import "C"Cgo将输入文件转换为四个输出文件:两个Go源文件,一个用于6c(或8c或5c)的C文件,以及一个用于gcc的C文件.
Make.pkg中的标准包makefile规则自动执行使用cgo的过程.有关示例,请参阅$ GOROOT/misc/cgo/stdio和$ GOROOT/misc/cgo/gmp.
Cgo尚未与gccgo合作.
混合使用不同的编程语言一直是我不太了解的事情.根据这篇维基百科的文章,外部函数接口(或FFI)可以通过以下几种方式完成:
- 要求以特定方式指定或实现要作为主机语言可调用的客户语言函数; 经常使用某种兼容性库.
- 使用工具使用适当的粘合代码自动"包装"客户语言函数,该代码执行任何必要的转换.
- 使用包装器库
- 限制可以跨语言使用的主机语言功能集.例如,从C调用的C++函数可能(通常)不包括引用参数或抛出异常.
我的问题:
它链接的一个来源说,实现FFI可以通过以下几种方式完成:
- 要求目标语言中的被调用函数实现特定协议.
- 实现一个包含给定低语言函数的包装器库,并用代码"包装"它以与高级语言约定进行数据转换.
- 要求声明为native的函数使用高级功能的子集(与低级语言兼容).
我想知道链接源中的第一种方式是否与维基百科中的第一种方式相同?
这个来源的第三种方式意味着什么?它与维基百科的第四种方式相对应吗?
是语言绑定和FFI等价概念?他们是如何相关和不同的?
从编程语言到库或OS服务的绑定是以该语言提供该服务的API.
我想知道维基百科的引文中的哪一种方式或以下每个例子所属的来源?
谢谢你的启示!最好的祝福!
我的应用服务器ibm websphere.我在应用程序服务器日志中收到以下错误.我在哪里可以进行websphere设置?
[19.09.2012 14:56:54:940 EEST] 0000000a SystemErr R SLF4J:类路径包含多个SLF4J绑定.
[19.09.2012 14:56:54:940 EEST] 0000000a SystemErr R SLF4J:在[wsjar:file:/ C:/Lib/slf4j-log4j12-1.6.1.jar!/ org/slf4j/impl/StaticLoggerBinder中找到绑定.class]
[19.09.2012 14:56:54:941 EEST] 0000000a SystemErr R SLF4J:在[bundleresource://217.fwk37356669:1/org/slf4j/impl/StaticLoggerBinder.class]中找到绑定
[19.09.2012 14 :56:54:941 EEST] 0000000a SystemErr R SLF4J:请参阅http://www.slf4j.org/codes.html#multiple_bindings以获得解释.
好的,我知道.这已经被问了一百万次,但我仍然没有得到它.对不起.
任务:实现最简单的依赖属性,可以在xaml中使用:
<uc:MyUserControl1 MyTextProperty="{Binding Text}"/>
Run Code Online (Sandbox Code Playgroud)
我认为这个答案非常接近.为了更好的可读性,我在这里复制了所有代码(主要来自上面的答案).
<UserControl x:Class="Test.UserControls.MyUserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid>
<!-- Text is being bound to outward representative property;
Note the DataContext of the UserControl -->
<TextBox Text="{Binding MyTextProperty}"/>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
和
public partial class MyUserControl1 : UserControl
{
// The dependency property which will be accessible on the UserControl
public static readonly DependencyProperty MyTextPropertyProperty =
DependencyProperty.Register("MyTextProperty", typeof(string), typeof(MyUserControl1), new UIPropertyMetadata(String.Empty));
public string MyTextProperty
{
get { return (string)GetValue(MyTextPropertyProperty); }
set { …Run Code Online (Sandbox Code Playgroud) 码:
<input type="text" ng-modal="name" />
{{name}}
Run Code Online (Sandbox Code Playgroud)
当我输入内容时input,以下内容{{name}}会立即更改.是否能够配置它只name在我输入所有字符并保留输入后更新?
我有一个绑定的TextBlockXAML:
<TextBlock Text="{Binding MyText}"/>
Run Code Online (Sandbox Code Playgroud)
我知道FallbackValue如果Binding不可用,可以使用,但这是在运行时发生的吗?有没有办法在设计时显示默认值?如果我在设计窗口而不是空的时候看到一个值,它会让事情变得更容易TextBlock.
谢谢