我有几个类似切换的按钮,当我处于按下状态时,我希望它们齐声搏动.
我已经定义了一个带有触发器的样式,该触发器可以启动发光动画,除了每个按钮与其他按钮异步脉动这一事实之外,它的工作正常.
如何让每个按钮与其他按钮同步?
这是风格:
<Storyboard x:Key="pulseStory">
<ColorAnimation
Storyboard.TargetProperty="(Control.Background).(SolidColorBrush.Color)"
From="Red"
To="Transparent"
Duration="0:0:1" />
</Storyboard>
<Style x:Key="pulseButton" TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding Tag,RelativeSource={RelativeSource Self}}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource pulseStory}"/>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
干杯!
我目前正在评估我重写我正在进行的项目的选项,我对app.config文件的字符串类型性质感到有点恼火.
我想采用更有条理的方法,所以我有两个选择:
我想得到你的意见和恐怖故事,使用XAML的优点和缺点是什么?
干杯,弗洛里安
我想构建一个具有以下结构的MRU菜单:
File
+=>Recent Files
+=> Doc1.txt
+=> Doc2.txt
-separator-
+=> Clear entries
Run Code Online (Sandbox Code Playgroud)
这是MVVM,我的mru列表是视图模型的数据绑定.因为我想添加分隔符,并且我不想在项目列表中插入分隔符和清除条目操作,我当前正在为我的菜单使用itemscontrol容器,但是我遇到了可怕的填充问题.你有任何解决方案可以让我只添加MenuItem实例吗?
这是XAML:
<!-- MRU list -->
<MenuItem Header="_Recent Files" >
<ItemsControl ItemsSource="{Binding MostRecentlyUsed.Entries,Mode=OneWay}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding ShortName}" ToolTip="{Binding FileName}" Command="{Binding OpenCommand}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Separator />
<MenuItem Header="_Clean Entries" Command="{Binding MostRecentlyUsed.CleanCommand}" />
</MenuItem>
<Separator />
Run Code Online (Sandbox Code Playgroud)
干杯,弗洛里安
我的可执行 Rust crate 使用libfoo.a依赖于共享库的本机库libbar.so,但根本不公开它。
我的 Rust FFI 使用来自 libfoo 的方法,所以我link在我的外部代码中定义了一个属性:
#[link(name="foo", kind="static")]
extern "C"{
pub fn do_foo();
}
Run Code Online (Sandbox Code Playgroud)
我build.rs包括Cargo.toml使用build="build.rs"
fn main() {
let libs = &[(Some("../libs/foo/1.0/"), "static=foo"), // use ../libs/foo/1.0/libfoo.a
(None, "bar")]; // use libbar.so using LD_LIBRARY_PATH
for &(ref m_path, ref lib) in libs {
if let &Some(static_path) = m_path {
println!("cargo:rustc-link-search={}", &static_path);
}
println!("cargo:rustc-link-lib={}", &lib);
}
}
Run Code Online (Sandbox Code Playgroud)
哪个输出
cargo:rustc-link-search=../libs/foo/1.0/
cargo:rustc-link-lib=static=foo
cargo:rustc-link-lib=bar
Run Code Online (Sandbox Code Playgroud)
从理论上讲,我希望 Rust 链接到libfoo.a和libbar.so。问题是 …
通话is_null()感觉有点奇怪:
fn do_stuff(ptr: *const i32) -> Option<i32> {
if ptr.is_null() {
None
} else {
Some(do_transform(*ptr, 42))
}
}
Run Code Online (Sandbox Code Playgroud) 我的FFI绑定返回一个带有固定大小c_char数组的结构,我想将它们转换为std::ffi::CString或std::String.
看起来该CString::new函数强制指向矢量的指针.
use std::ffi::CString;
use std::os::raw::c_char;
#[repr(C)]
pub struct FFIStruct {
pub Id: [::std::os::raw::c_char; 256usize],
pub Description: [::std::os::raw::c_char; 256usize],
}
fn get_struct() -> Option<FFIStruct> {
println!("cheating");
None
}
pub fn main() {
match get_struct() {
Some(thing) =>
println!("Got id:{}",CString::new(thing.Id.as_ptr())),
None => (),
}
}
Run Code Online (Sandbox Code Playgroud)
这是Rust Playground链接.