我有一份我想要呈现的日期列表。最初我想过使用datepicker但它没有最大天数或最大月数(难以置信),这对我来说是一个要求。 因此,我想到生成自己的日期并将其呈现给用户。 以下是我想要显示它的方式
我目前正在使用列表框。我尝试了组合框,网格视图,但我在所有这些方面都遇到了同样的问题
问题
当日期在两条蓝线下面时,我想将其设置为选中状态。我能想到的唯一方法是通过获取线的位置来使用代码,然后获取列表框中每个项的位置以确定哪个位于范围内。
提前致谢
答案 0 :(得分:0)
所以经过3天左右的捣乱后,我发现以下解决方案很有用
首先找到位于两条线之间的中点。 (找到水平中点,然后找到垂直中点)。我使用以下代码找到了中点
private void DetermineSelectionLineBoundaries()
{
if (SelectionBoundaryUpper == null || HorizontalScrollPanel == null)
{
return;
}
var transform = SelectionBoundaryUpper.TransformToVisual(Window.Current.Content);
_upperStart = transform.TransformPoint(new Point(0, 0));
_upperEnd = new Point(_upperStart.X + 100, _upperStart.Y);
var lowertransform = SelectionBoundaryLower.TransformToVisual(Window.Current.Content);
_lowerStart = lowertransform.TransformPoint(new Point(0, 0));
var midPointHorizontal = CalculateMidpoint(_upperStart, _upperEnd);
var midPointVertical = CalculateMidpoint(_lowerStart, _upperStart);
_midPoint = new Point(midPointHorizontal.X, midPointVertical.Y);
}
一旦你有了这个,就每次滚动调用
VisualTreeHelper.FindElementsInHostCoordinates(_midPoint, Window.Current.Content).ToList();
此功能将为您提供所有元素。说实话,我不只是得到那个元素我基本上得到页面上垂直落在同一个地方的所有内容。也许我做错了什么。但好消息是我只得到一个列表框项目。很容易循环。
完成后,只需打开IsSelected标志。
希望这有助于某人
我找不到任何xaml方法来做到这一点。