- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 UWP 使用 telerik SizeDrawer 控件。在其中,我希望抽屉内容在打开时覆盖整页。所以我尝试绑定(bind)到页面的 Actual-Width 但这没有用然后我尝试用 sizeChanged 事件注册它但抽屉内容的宽度仍然为 0。除非我明确定义它一些像 300 这样的值然后它仍然是 300 但我希望它覆盖全屏。
代码
<telerik:RadSideDrawer Name="MainDrawer" SizeChanged="MainDrawer_SizeChanged"
Loaded="MainDrawer_Loaded">
<telerik:RadSideDrawer.MainContent>
<Grid />
</telerik:RadSideDrawer.MainContent>
<telerik:RadSideDrawer.DrawerContent>
<Grid Name="DrawerGrid" Background="Yellow">
</Grid>
</telerik:RadSideDrawer.DrawerContent>
</telerik:RadSideDrawer>
C#
private void MainDrawer_SizeChanged(object sender, SizeChangedEventArgs e)
{
DrawerGrid.Width = e.NewSize.Width;
}
private void MainDrawer_Loaded(object sender, RoutedEventArgs e)
{
DrawerGrid.Width = MainDrawer.Width;
}
请注意,抽屉网格的高度是可以的,并且可以拉伸(stretch)到全屏,但宽度保持为 0,如果宽度完全没有变化,则固定为 240。
最佳答案
这就是你的做法-
首先,定义一个 double
属性来获取当前 Window
的宽度。
public double WindowWidth => Window.Current.Bounds.Width;
然后将其用作 RadSideDrawer
的 DrawerLength
的一次性绑定(bind)源。
<primitives:RadSideDrawer x:Name="MainDrawer"
DrawerLength="{x:Bind WindowWidth}" ... />
最后,每当 MainDrawer
的大小更新时更新 DrawerLength
。
private void MainDrawer_SizeChanged(object sender, SizeChangedEventArgs e) =>
MainDrawer.DrawerLength = e.NewSize.Width;
另请注意,如果您不想进行绑定(bind),可以在 InitializeComponent();
MainDrawer.DrawerLength = Window.Current.Bounds.Width;
看起来当抽屉折叠时,控件本身将其 Opacity
重置为 1
,然后当您不断更新 DrawerLength
, 抽屉的边缘可能会出来并给用户带来糟糕的体验。
您可以尝试使用 Reactive Extensions 来限制页面大小的变化,或者您可以简单地将抽屉的 Opacity
设置回 0
它折叠了。
为此,您只需监控 DrawerState
属性,当它处于 Closed
时,将 DrawerGrid.Opacity
设置为 0
。
但请记住,您还需要在展开之前将其设置回 1
。不幸的是,没有 Opening
状态并且 Opened
触发得太晚了,因此您必须找到菜单按钮并在其 Click
事件中执行此操作.
public MainPage()
{
InitializeComponent();
MainDrawer.DrawerLength = Window.Current.Bounds.Width;
Loaded += (s, e) =>
{
// GetChildByName: https://github.com/JustinXinLiu/Continuity/blob/master/Continuity/Extensions/UtilExtensions.cs#L44
var menuButton = MainDrawer.GetChildByName<Button>("PART_SideDrawerButton");
menuButton.Click += (s1, e1) => DrawerGrid.Opacity = 1;
};
MainDrawer.RegisterPropertyChangedCallback(RadSideDrawer.DrawerStateProperty, (s, e) =>
{
var state = MainDrawer.DrawerState;
if (state == DrawerState.Closed)
{
DrawerGrid.Opacity = 0;
}
});
}
关于c# - 如何让RadSideDrawer的Drawer占满整个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44902588/
我编写了一个函数来包含两个 DateTime 之间的小时列表。 但最后它看起来并不是很容易阅读,这让我想对它进行单元测试,即使我正在从事的项目根本没有进行单元测试。 所以我的问题是,是否有一种更易读或
我一定是漏掉了什么,因为我还没有在网上找到这个非常基本的问题的答案。我正在使用能够容纳三个 int 的缓冲 channel 值。 然后我使用三个 goroutine 来填充它,一旦缓冲 channel
我发现如果一个矩阵(几乎)满了,那么将它存储在稀疏中会导致(更多)更多的计算时间。 虽然以稀疏形式存储完整矩阵是微不足道的,但我只想知道这一事实背后的原因。 我的推测是稀疏索引读取将是计算时间的主要贡
root@root:~# sudo du -ch --max-depth=1 --exclude=/home/ / du: cannot access ‘/sys/kernel/slab/L2TP/I
基本上我想创建一个 UIProgressView 在 3 秒内从 0.0(空)到 1.0(满)。有人能指出我在 swift 中使用 NSTimer 与 UIProgressView 的正确方向吗? 最
我是一名优秀的程序员,十分优秀!