- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个高度不同的网格。随着高度的缩小,其中一些元素将开始被剪掉,导致外观相当丑陋。
我已经尝试绑定(bind)网格的 ActualHeight
并使用转换器使元素在硬编码高度处消失。但是,这相当困惑,如果不是真的需要,我不想对其进行硬编码。
还有其他方法可以解决这个问题吗?例如,以某种方式获取元素的位置并将它们与网格 ActualHeight
进行比较。
谢谢:)
更新,添加了 xaml 代码并在显示问题的图片下方。
对于第三行的网格,我添加了一个转换器,它在网格 ActualHeight
低于硬编码值时返回 Visibility.Hidden
。
<DataTemplate x:Key="leafContentTemplate" >
<Border BorderThickness="5" Background="DimGray">
<Grid Background="{Binding Tag.PriceChangeDirection, Converter={StaticResource ColorConverter}}" Name="StockGrid" >
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<dxe:SparklineEdit Grid.Row="0" Grid.ColumnSpan="2" Grid.RowSpan="100" EditValue="{Binding Tag.Prices}" Margin="0 5 0 0" >
<dxe:SparklineEdit.StyleSettings >
<dxe:AreaSparklineStyleSettings AreaOpacity="0.3" Brush="DarkBlue" />
</dxe:SparklineEdit.StyleSettings>
<dxe:SparklineEdit.PointArgumentRange>
<dxe:Range Auto="True"/>
</dxe:SparklineEdit.PointArgumentRange>
</dxe:SparklineEdit >
<TextBlock Grid.Row="0" Text="{Binding Tag.Name}" FontSize="16"
Foreground="Black"/>
<TextBlock Grid.Row="1" Text="{Binding Tag.Ticker}"
Foreground="Black" FontSize="24"/>
<TextBlock Grid.Row="2" Text="{Binding Tag.Volume, StringFormat=Vol.: {0}}" FontSize="16"
Foreground="Black" />
<TextBlock Grid.Row="3" Text="{Binding Tag.Trades, StringFormat=Trades: {0}}" FontSize="16"
Foreground="Black" Visibility="{Binding ElementName=StockGrid, Path=ActualHeight, Converter={StaticResource HeightToVisibilityConverter}}" />
<StackPanel Grid.Column="1" Grid.RowSpan="100" Orientation="Vertical" Margin="0,0,10,10" VerticalAlignment="Bottom" HorizontalAlignment="Right" >
<TextBlock HorizontalAlignment="Right" Text="{Binding Tag.Price}"
Foreground="White" FontSize="30"/>
<Grid HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,0,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Text="{Binding Tag.PercentPriceChange}" Foreground="White" FontSize="16"/>
<TextBlock Grid.Column="1" Text="▲" Visibility="{Binding Tag.IsPosValueChange,Converter={StaticResource BoolToVisibility}}"
Foreground="White" Margin="10,0,0,0" FontSize="16"/>
<TextBlock Grid.Column="1" Text="▼" Visibility="{Binding Tag.IsPosValueChange,Converter={StaticResource InverseBoolToVisibility}}"
Foreground="White" Margin="10,0,0,0" FontSize="16" />
</Grid>
</StackPanel>
</Grid>
</Border>
</DataTemplate>
最佳答案
对于可重用的解决方案,您需要两件事:
我将您的 XAML 精简到极点
<Border BorderThickness="5" Background="DimGray">
<Grid x:Name="Container">
<Grid x:Name="StockGrid" >
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="Projector Forsikring" FontSize="16"
Foreground="Black"/>
<TextBlock Grid.Row="1" Text="OSL.PROT"
Foreground="Black" FontSize="24"/>
<TextBlock Grid.Row="2" Text="Vol.10000" FontSize="16"
Foreground="Black" />
<TextBlock Grid.Row="3" Text="ProTrade" FontSize="16"
Foreground="Black">
<TextBlock.Visibility>
<MultiBinding Converter="{StaticResource HeightToVisibilityConverter}">
<Binding ElementName="Container" Path="ActualHeight"/>
<Binding ElementName="StockGrid" Path="ActualHeight"/>
</MultiBinding>
</TextBlock.Visibility>
</TextBlock>
</Grid>
</Grid>
</Border>
IMultiValueConverter
public class HeightToVisibilityConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
double ContainerHeight = (double)values[0];
double StockGridHeight = (double)values[1];
if (ContainerHeight < StockGridHeight)
return Visibility.Hidden;
else
return Visibility.Visible;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
请注意,您可以更进一步。使用每一行中控件的 ActualHeights 的总和,而不是 StockGrid 的 ActualHeights 的总和。然后每个控件都可以拥有自己的转换器。
关于c# - WPF - 当网格开始切割元素时使元素消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38166357/
Python 中是否有任何预制的优化工具/库来切割/切片值“小于”某物的列表? 问题来了:假设我有一个列表: a=[1,3,5,7,9] 我想删除所有 2 的项目,将会有很多迭代)。 我也可以使用二进
我创建了一个 fiddle 来更好地展示我想问的问题。 angle crop of pseudo element 这是一张显示所需结果的图片: li.active::after { conte
我有一个字符串如下: 2012/02/01,13:27:20,872226816,-1174749184,2136678400,2138578944,-17809408,2147352576 我想提取
RESTEasy 看起来会忽略尾部斜杠,因此我无法编写带有和不带有尾部斜杠的两个不同的 Web 服务,此示例显示: @Path("foo") public class TestClass {
mov rax,QWORD PTR [rbp-0x10] mov eax,DWORD PTR [rax] add eax,0x1 mov DWORD PTR [rbp-0x14], eax 下
我有以下 xml: External Vendor File External vendor file for so
我在 Python 中工作,并在 Pandas 中使用剪切功能。我想让我的 pd.cut 中的 bins 基于用户定义的逗号分隔整数,具有预定义的上限和下限。换句话说,我想将 bins 预定义为 [0
我正在尝试嵌入 ShareThis将代码写入使用 Bootstrap 创建的网站。 问题是由于某种原因,两个按钮的底部都被切断了,而且我似乎无法使用 Bootstrap 列偏移将按钮居中,因为使用这种
我正在尝试模拟无线传感器节点网络,以研究网络的稳健性。我面临以下问题: 我有一个具有一些边缘容量的节点网络。这相当于算法中的网络流问题。有一个源节点(检测某些事件)和一个接收节点(我的基站)。现在,我
我有一个 UIImageView,带有特定的图像。我还有一个形状奇怪的 UIBezierPath。我想将图像剪切成该形状并返回该形状的新图像。 形式为: func getCut(bezier:UIBe
我有一个大型的全局 .nc 文件数据集,我正试图将它们裁剪到一个较小的区域。我将此区域存储为 .shp 文件。 我曾尝试使用 Qgis 中的 gdal,但需要通过转换每个变量来做到这一点,我必须为所有
我正在使用以下命令来剪切 FLAC 文件:ffmpeg -i input.flac -ss 10s -t 10s -c copy output.flacoutput.flac包含正确的音频持续时间。但
我希望为以下组件制作足迹: AG EMCO HV power supply 现在,这个组件可以通过电路板安装,虽然它不是一个很高的组件,但我希望探索这个选项。我想一个附带问题是:PCB 制造商有多喜欢
我目前正在用 C++ 编写一个小程序(在 Mac 上,其中包含一些 C 代码)并且需要从套接字中检索二进制数据(效果很好),但我还需要切断 HTTP标题。 基本上,我连接到服务器,发送 HTTP GE
我想制作一个Python程序,其中在文本文件中给出DNA序列。它有超过9000个字符。我必须将序列剪成 3 个字符所以我们的框架从1到3读取,然后4到6,然后7到9,这被称为密码子。 例如,序列是 A
我正在开发一个迷你游戏,如果我将 DIN-Ax 作为输入,我需要找出可以在 DIN-A0 纸上画多少行。例如: ;car horizontal and cdr vertical lines (defi
我在下面有这个名为 monitor.log 的报告文件 switch#sh mac address-table int g1/0/1 Mac Address Table -----
我的设备上有 MPEG-TS 文件。我想从设备上的文件开始处截断一个相当准确的时间。 使用 FFmpegWrapper作为基地,我希望能够实现这一目标。 不过,我对 ffmpeg 的 C API 有点
我导出了两个字段:name和header从数据库中使用: SELECT name, header INTO OUTFILE '/var/lib/mysql-files/myfile.txt' FIEL
这个问题在这里已经有了答案: How do you parse and process HTML/XML in PHP? (31 个答案) 关闭 9 年前。 我尝试转换以下字符串 st
我是一名优秀的程序员,十分优秀!